desc - order by sql server ejemplos
¿cuál es la diferencia entre GROUP BY y ORDER BY en sql (11)
- GROUP BY agregará registros por la columna especificada, lo que le permite realizar funciones de agregación en columnas no agrupadas (como SUM, COUNT, AVG, etc.). ORDER BY altera el orden en que se devuelven los artículos.
- Si SELECCIONA IsActive, COUNT (*) DE Clientes GROUP BY IsActive obtiene un recuento de clientes activos e inactivos. El grupo agrega los resultados según el campo que especificó. Si selecciona SELECT * FROM Customers ORDER BY Name, obtendrá la lista de resultados ordenada por el nombre del cliente.
- Si agrupa, los resultados no están necesariamente ordenados; aunque en muchos casos pueden aparecer en un orden intuitivo, eso no está garantizado por la cláusula GROUP. Si desea que sus grupos estén ordenados, siempre use un ORDEN explícito POR después de GROUP BY.
- Los datos agrupados no se pueden filtrar por la cláusula WHERE. Los datos de pedido se pueden filtrar por la cláusula WHERE.
¿Cuándo usas cuál en general? ¡Los ejemplos son muy alentadores!
Me refiero a MySql, pero no puedo imaginar que el concepto sea diferente en otro DBMS
Algunos buenos ejemplos allí. Simplemente me gustaría agregar el mío de webcheatsheet, que proporciona buenos ejemplos claros, además de permitirle ejecutar su propio SQL.
Cabe señalar que GROUP BY
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;
GROUP BY se utiliza para agrupar filas en una selección, generalmente cuando se agregan filas (por ejemplo, cálculo de 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 declaración de selección.
La diferencia es exactamente lo que su nombre implica: un grupo realiza una operación de agrupación y ordena por orden.
Si selecciona SELECT * FROM Customers ORDER BY Name
, obtendrá la lista de resultados ordenada por el nombre del cliente.
Si SELECT IsActive, COUNT(*) FROM Customers GROUP BY IsActive
obtiene un recuento de clientes activos e inactivos. El grupo agrega los resultados según el campo que especificó.
ORDER BY altera el orden en 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 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
Simple, ORDER BY
ordena los datos y grupos GROUP BY
, o combina los datos.
ORDER BY
ordena el conjunto de resultados según el campo mencionado, por defecto en orden ascendente.
Supongamos que está ORDER BY (student_roll_number)
una consulta como ORDER BY (student_roll_number)
, le mostrará el resultado en orden ascendente de los números de lista del alumno. Aquí, la entrada student_roll_number
puede ocurrir más de una vez.
En el caso GROUP BY
, usamos 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)
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).
Tienen un significado totalmente diferente y en realidad no están relacionados en absoluto.
ORDER BY le permite ordenar el conjunto de resultados según diferentes criterios, como primero ordenar por nombre de az, luego ordenar por el precio más alto al más bajo.
(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, puede seleccionar a todos los empleados, agruparlos según la ubicación de su lugar de trabajo y calcular el salario promedio de todos los empleados de cada lugar de trabajo.
ORDER BY
muestra un campo en orden ascendente o descendente. Mientras GROUP BY
muestra los mismos nombres de campo, id, etc. en una sola salida.
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 ordenaría el resultado en orden ascendente por NAME:
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 datos idénticos en grupos.
Ahora, la tabla CLIENTES 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 usted ha inferido que no sirve de nada sin las funciones de SQL como sum, avg, etc.
por lo tanto, repase esta definición para comprender el uso apropiado 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 para cada grupo, mediante el uso de la función Aggregate apropiada 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 clasificación de 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 |
+---------+-------------+