A cláusula GROUP BY e a cláusula ORDER BY em SQL são usadas para organizar os dados obtidos por consultas SQL. A diferença importante entre a cláusula GROUP BY e a cláusula ORDER BY é que a cláusula GROUP BY é aplicada quando queremos usar uma função agregada na consulta SQL em mais de um conjunto de linhas. Em contrapartida, a cláusula ORDER BY é aplicada quando queremos receber os dados obtidos pela consulta na ordem de classificação. Antes de avançar para os gráficos de comparação, primeiro entenderemos essas cláusulas SQL.
Cláusula GROUP BY
A instrução GROUP BY em SQL usa consultas para organizar dados dentro de valores de atributo. Normalmente, usamos a cláusula GROUP BY com a instrução SELECT. Temos que colocar a cláusula GROUP BY após a cláusula WHERE sempre. Além disso, ele também é ritmado antes da cláusula ORDER BY.
Muitas vezes, podemos usar a cláusula GROUP BY com funções agregadas como SUM, AVG, MIN, MAX e COUNT para produzir saída do banco de dados. A consulta para a cláusula GROUP BY é consulta agrupada e retorna uma única linha para cada objeto agrupado.
Abaixo está a sintaxe para usar a cláusula GROUP BY em uma consulta SQL
SELECT COLUMNNAME, FUNCTION(COLUMNNAME) FROM TABLENAME WHERE CONDITION GROUP BY COLUMNNAME;
Vamos entender a cláusula GROUP BY com a ajuda de alguns exemplos. Considere as tabelas a seguir junto com os registros fornecidos.
Tabela:Funcionários
EMPLOYEEID | FIRST_NAME | LAST_NAME | SALÁRIO | CIDADE | DEPARTAMENTO | GERENTE | WORKING_HOURS | GÊNERO |
1001 | VAIBHAVI | MISHRA | 65.000 | PUNE | ORACLE | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | ORACLE | 1 | 9 | M |
1003 | NIQUIL | VANI | 50.000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRAQUI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 | 10 | F |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | TESTE | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | ONDE | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTE | 4 | 10 | M |
Exemplo 1: Suponha que queremos saber a soma dos salários dos funcionários em uma determinada cidade para os dados acima. Para fazer isso, executaremos a consulta abaixo da seguinte forma:
SELECT CITY, SUM(SALARY) FROM EMPLOYEES GROUP BY CITY;
Essa consulta formou inicialmente um resultado que agrupou a cidade. Em seguida, a SOMA função é executada em cada grupo de cidades e, por fim, obteremos os resultados desejados conforme mostrado abaixo:
Exemplo 2: Suponha que queremos saber o salário máximo dos funcionários em um departamento específico para os dados acima. Para fazer isso, executaremos a consulta abaixo da seguinte forma:
SELECT DEPARTMENT, MAX(SALARY) FROM EMPLOYEES GROUP BY DEPARTMENT;
Essa consulta formou inicialmente um resultado que agrupou o departamento. Em seguida, o MAX função é executada em cada grupo do departamento e, por fim, obteremos os resultados desejados conforme mostrado abaixo:
Cláusula ORDER BY
A cláusula GROUP BY e a cláusula ORDER BY podem ser usadas com a instrução SELECT. Nas consultas SQL, usamos a cláusula ORDER BY para classificar os registros retornados pela consulta em ordem crescente ou decrescente. Se não mencionamos a ordem de classificação, todo o resultado seria classificado por padrão em ordem crescente.
Abaixo está a sintaxe para usar a cláusula ORDER BY em uma consulta SQL
SELECT * FROM TABLENAME ORDER BY [ASC | DESC];
Vamos entender a cláusula ORDER BY com a ajuda de alguns exemplos. Considere as tabelas a seguir junto com os registros fornecidos.
Tabela:Funcionários
EMPLOYEEID | FIRST_NAME | LAST_NAME | SALÁRIO | CIDADE | DEPARTAMENTO | GERENTE | WORKING_HOURS | GÊNERO |
1001 | VAIBHAVI | MISHRA | 65.000 | PUNE | ORACLE | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60.000 | NOIDA | ORACLE | 1 | 9 | M |
1003 | NIQUIL | VANI | 50.000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRAQUI | SHARMA | 55500 | CHANDIGARH | ORACLE | 1 | 10 | F |
2002 | BHAVESH | JAIN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAIN | 50.000 | MUMBAI | TESTE | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | ONDE | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAI | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | MUMBAI | TESTE | 4 | 10 | M |
Exemplo 1: Suponha que queremos organizar o resultado na ordem de classificação, crescente ou decrescente, com base na coluna do primeiro nome. Nesse caso, gostaríamos de usar a cláusula ORDER BY para obter o resultado. Para fazer isso, executaremos a consulta abaixo da seguinte forma:
SELECT * FROM EMPLOYEES ORDER BY FIRST_NAME ASC;
Diferença chave entre GROUP BY e ORDER BY
A seguir estão os pontos que diferenciam as cláusulas GROUP BY e ORDER BY:
- A instrução GROUP BY em SQL é usada para agrupar os registros com base em um valor semelhante em uma coluna específica. Por outro lado, a cláusula ORDER BY em SQL é usada para classificar os resultados de exibição em ordem crescente ou decrescente.
- Ao realizar uma consulta usando a cláusula GROUP BY na consulta SQL, é obrigatório usar a função agregada. Por outro lado, ao usar a cláusula ORDER BY no SQ, não é obrigatório usar uma função de agregação.
- A cláusula GROUP BY é sempre colocada na consulta SQL após a cláusula WHERE, mas antes da cláusula ORDER BY. Por outro lado, a cláusula ORDER BY é sempre colocada após a cláusula GROUP BY.
Quadro de comparação
SR.NO | GRUPAR POR | ORENDER POR |
1 | A cláusula GROUP BY é usada para agrupar as linhas com valores semelhantes. | A cláusula ORDER BY é usada para classificar o resultado em ordem decrescente ou crescente |
2 | Controla a apresentação das linhas | Controla a apresentação das colunas |
3 | A cláusula GROUP BY é sempre colocada antes da cláusula ORDER BY. | A cláusula ORDER BY é sempre colocada após a cláusula GROUP BY. |
4 | É obrigatório usar uma função agregada | Não é obrigatório usar uma função agregada |
5 | O atributo não pode estar na função agregada | na instrução GROUP BY. O atributo pode estar sob a função agregada na instrução ORDER BY. |