Respuestas:
ORDER BY altera el orden en el que se devuelven los artículos.
GROUP BY agregará registros por las columnas especificadas, lo que le permite realizar funciones de agregación en columnas no agrupadas (como SUM, COUNT, AVG, etc.).
ORDER BY altera el orden en el que se devuelven los artículos.
GROUP BY agregará registros por las columnas especificadas, lo que le permite realizar funciones de agregación en columnas no agrupadas (como SUM, COUNT, AVG, etc.).
TABLE:
ID NAME
1 Peter
2 John
3 Greg
4 Peter
SELECT *
FROM TABLE
ORDER BY NAME
=
3 Greg
2 John
1 Peter
4 Peter
SELECT Count(ID), NAME
FROM TABLE
GROUP BY NAME
=
1 Greg
1 John
2 Peter
SELECT NAME
FROM TABLE
GROUP BY NAME
HAVING Count(ID) > 1
=
Peter
age
columna, con Peters tiene diferentes edades y la consulta es SELECCIONAR NOMBRE, EDAD DEL GRUPO DE LA TABLA POR NOMBRE?
ORDER BY: ordena los datos en orden ascendente o descendente.
Considere la tabla CLIENTES :
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
A continuación se muestra un ejemplo, que clasificaría el resultado en orden ascendente por NOMBRE:
SQL> SELECT * FROM CUSTOMERS
ORDER BY NAME;
Esto produciría el siguiente resultado:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
+----+----------+-----+-----------+----------+
GROUP BY: organiza los datos idénticos en grupos.
Ahora, la tabla CUSTOMERS tiene los siguientes registros con nombres duplicados:
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
| 3 | kaushik | 23 | Kota | 2000.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
+----+----------+-----+-----------+----------+
si desea agrupar nombres idénticos en un solo nombre, la consulta GROUP BY sería la siguiente:
SQL> SELECT * FROM CUSTOMERS
GROUP BY NAME;
Esto produciría el siguiente resultado: (para nombres idénticos, elegiría el último y finalmente ordenaría la columna en orden ascendente)
+----+----------+-----+-----------+----------+
| ID | NAME | AGE | ADDRESS | SALARY |
+----+----------+-----+-----------+----------+
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 4 | kaushik | 25 | Mumbai | 6500.00 |
| 6 | Komal | 22 | MP | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 2 | Ramesh | 25 | Delhi | 1500.00 |
+----+----------+-----+-----------+----------+
como ha inferido que no sirve de nada sin funciones SQL como sum, avg, etc.
así que revise esta definición para comprender el uso adecuado de GROUP BY:
Una cláusula GROUP BY funciona en las filas devueltas por una consulta al resumir filas idénticas en un grupo único / distinto y devuelve una sola fila con el resumen de cada grupo, mediante el uso de la función Aggregate adecuada en la lista SELECT, como COUNT (), SUM (), MIN (), MAX (), AVG (), etc.
Ahora, si desea saber la cantidad total de salario de cada cliente (nombre), la consulta GROUP BY sería la siguiente:
SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
GROUP BY NAME;
Esto produciría el siguiente resultado: (suma de los salarios de nombres idénticos y ordena la columna NAME después de eliminar nombres idénticos)
+---------+-------------+
| NAME | SUM(SALARY) |
+---------+-------------+
| Hardik | 8500.00 |
| kaushik | 8500.00 |
| Komal | 4500.00 |
| Muffy | 10000.00 |
| Ramesh | 3500.00 |
+---------+-------------+
La diferencia es exactamente lo que el nombre implica: un grupo por realiza una operación de agrupación y un orden por géneros.
Si lo hace SELECT * FROM Customers ORDER BY Name
, obtendrá la lista de resultados ordenada por el nombre del cliente.
Si lo hace SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
, obtiene un recuento de clientes activos e inactivos. El grupo por agregó los resultados según el campo que especificó.
Tienen un significado totalmente diferente y no están realmente relacionados en absoluto.
ORDER BY le permite ordenar el conjunto de resultados de acuerdo con diferentes criterios, como primero ordenar por nombre desde az, luego ordenar por precio de mayor a menor.
(ORDEN POR nombre, precio DESC)
GROUP BY le permite tomar su conjunto de resultados, agruparlo en grupos lógicos y luego ejecutar consultas agregadas en esos grupos. Por ejemplo, podría seleccionar a todos los empleados, agruparlos por la ubicación de su lugar de trabajo y calcular el salario promedio de todos los empleados de cada lugar de trabajo.
Simple, ORDER BY
ordena los datos y GROUP BY
agrupa, o combina los datos.
ORDER BY
ordena el conjunto de resultados según el campo mencionado, por defecto en orden ascendente.
Suponga que está lanzando una consulta como ORDER BY (student_roll_number)
, le mostrará el resultado en orden ascendente de los números de lista de los estudiantes. Aquí, la student_roll_number
entrada puede ocurrir más de una vez.
En GROUP BY
caso de que usemos esto con funciones agregadas, y agrupa los datos según la función agregada, y obtenemos el resultado. Aquí, si nuestra consulta tiene SUM (marks)
junto con GROUP BY (student_first_name)
ella, se mostrará la suma de las notas de los estudiantes que pertenecen a cada grupo (donde todos los miembros de un grupo tendrán el mismo nombre).
GROUP BY se usa para agrupar filas en una selección, generalmente al agregar filas (por ejemplo, calcular totales, promedios, etc. para un conjunto de filas con los mismos valores para algunos campos).
ORDER BY se utiliza para ordenar las filas resultantes de una instrucción de selección.
Algunos buenos ejemplos allí. Al igual que agregar el mío desde la hoja de cheques web, que brinda buenos ejemplos claros, además de permitirle ejecutar su propio SQL.
ORDER BY
muestra un campo en orden ascendente o descendente. Si bien GROUP BY
muestra los mismos nombres de campo, id's, etc.en una sola salida.
Cabe señalar GROUP BY
que no siempre es necesario ya que (al menos en PostgreSQL, y probablemente en otras variantes de SQL) puede usar ORDER BY
con una lista y aún puede usar ASC
o DESC
por columna ...
SELECT name_first, name_last, dob
FROM those_guys
ORDER BY name_last ASC, name_first ASC, dob DESC;