La cláusula GROUP BY y la cláusula ORDER BY en SQL se utilizan para organizar los datos obtenidos por consultas SQL. La diferencia importante entre la cláusula GROUP BY y la cláusula ORDER BY es que la cláusula GROUP BY se aplica cuando queremos usar una función agregada en una consulta SQL en más de un conjunto de filas. Por el contrario, la cláusula ORDER BY se aplica cuando queremos recibir los datos obtenidos por la consulta en el orden ordenado. Antes de avanzar hacia los cuadros de comparación, primero comprenderemos estas cláusulas SQL.
Cláusula GROUP BY
La declaración GROUP BY en SQL utiliza consultas para organizar datos dentro de valores de atributos. Por lo general, usamos la cláusula GROUP BY con la instrucción SELECT. Tenemos que colocar la cláusula GROUP BY después de la cláusula WHERE siempre. Además, también tiene un ritmo antes de la cláusula ORDER BY.
A menudo podemos usar la cláusula GROUP BY con funciones agregadas como SUM, AVG, MIN, MAX y COUNT para generar resultados desde la base de datos. La consulta de la cláusula GROUP BY es una consulta agrupada y devuelve una sola fila para cada objeto agrupado.
A continuación se muestra la sintaxis para usar la cláusula GROUP BY en una consulta SQL
SELECT COLUMNNAME, FUNCTION(COLUMNNAME) FROM TABLENAME WHERE CONDITION GROUP BY COLUMNNAME;
Comprendamos la cláusula GROUP BY con la ayuda de algunos ejemplos. Considere las siguientes tablas junto con los registros dados.
Tabla:Empleados
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR | HORAS_TRABAJABLES | GÉNERO |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACULO | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACULO | 1 | 9 | M |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 | 10 | F |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY | PRUEBA | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | DÓNDE | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA | 4 | 10 | M |
Ejemplo 1: Supongamos que queremos saber la suma del salario de los empleados en una ciudad en particular para los datos anteriores. Para hacer esto, ejecutaremos la siguiente consulta de la siguiente manera:
SELECT CITY, SUM(SALARY) FROM EMPLOYEES GROUP BY CITY;
Esta consulta formó inicialmente un resultado que ha agrupado a la ciudad. A continuación, la SUMA La función se realiza en cada grupo de ciudades y, finalmente, obtendremos los resultados deseados como se muestra a continuación:
Ejemplo 2: Supongamos que queremos saber el salario máximo de los empleados en un departamento en particular para los datos anteriores. Para hacer esto, ejecutaremos la siguiente consulta de la siguiente manera:
SELECT DEPARTMENT, MAX(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;
Esta consulta formó inicialmente un resultado que ha agrupado al departamento. A continuación, el MAX La función se realiza en cada grupo del departamento y, finalmente, obtendremos los resultados deseados como se muestra a continuación:
Cláusula ORDEN POR
La cláusula GROUP BY y la cláusula ORDER BY podrían usarse con la instrucción SELECT. En consultas SQL, usamos la cláusula ORDER BY para ordenar los registros devueltos por la consulta en orden ascendente o descendente. Si no mencionáramos el orden de clasificación, el resultado completo se ordenaría de forma predeterminada en orden ascendente.
A continuación se muestra la sintaxis para usar la cláusula ORDER BY en una consulta SQL
SELECT * FROM TABLENAME ORDER BY [ASC | DESC];
Entendamos la cláusula ORDER BY con la ayuda de algunos ejemplos. Considere las siguientes tablas junto con los registros proporcionados.
Tabla:Empleados
ID DE EMPLEADO | FIRST_NAME | APELLIDO | SALARIO | CIUDAD | DEPARTAMENTO | ID DE ADMINISTRADOR | HORAS_TRABAJABLES | GÉNERO |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | ORACULO | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | ORACULO | 1 | 9 | M |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRACHI | SHARMA | 55500 | CHANDIGARH | ORACULO | 1 | 10 | F |
2002 | BHAVESH | JAÍN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAÍN | 50000 | BOMBAY | PRUEBA | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | DÓNDE | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | BOMBAY | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | BOMBAY | PRUEBA | 4 | 10 | M |
Ejemplo 1: Supongamos que queremos organizar el resultado en orden, ya sea ascendente o descendente, según la columna del nombre. En ese caso, nos gustaría usar la cláusula ORDER BY para obtener el resultado. Para hacer esto, ejecutaremos la siguiente consulta de la siguiente manera:
SELECT * FROM EMPLOYEES ORDER BY FIRST_NAME ASC;
Diferencia clave entre GROUP BY y ORDEN BY
Los siguientes son los puntos que diferencian entre las cláusulas GROUP BY y ORDER BY:
- La declaración GROUP BY en SQL se usa para agrupar los registros en función de un valor similar en una columna en particular. Por otro lado, la cláusula ORDER BY en SQL se usa para ordenar los resultados de la pantalla en orden ascendente o descendente.
- Al realizar una consulta usando la cláusula GROUP BY en una consulta SQL, es obligatorio usar la función de agregado. Por otro lado, al usar la cláusula ORDER BY en SQ, no es obligatorio usar una función agregada.
- La cláusula GROUP BY siempre se coloca en la consulta SQL después de la cláusula WHERE pero antes de la cláusula ORDER BY. Por otro lado, la cláusula ORDER BY siempre se coloca después de la cláusula GROUP BY.
Cuadro comparativo
SR.NO | AGRUPAR POR | ORDENAR POR |
1 | La cláusula GROUP BY se usa para agrupar las filas con valores similares. | La cláusula ORDER BY se usa para clasificar el resultado en orden ascendente o descendente |
2 | Controla la presentación de filas | Controla la presentación de columnas |
3 | LA cláusula GROUP BY siempre se coloca antes de la cláusula ORDER BY. | La cláusula ORDER BY siempre se coloca después de la cláusula GROUP BY. |
4 | Es obligatorio utilizar una función agregada | No es obligatorio usar una función agregada |
5 | El atributo no puede estar bajo la función de agregado | en la sentencia GROUP BY. El atributo puede estar bajo la función de agregado en la instrucción ORDER BY. |