Database
 sql >> Base de Dados >  >> RDS >> Database

GROUP BY vs ORDER BY


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.