Recomendado, 2024

Escolha Do Editor

Diferença entre agrupar por e ordenar por em SQL

O SQL permite organizar os dados obtidos pela consulta. Temos duas cláusulas para organizar os dados obtidos da consulta que são Group By e Order By. O ponto que distingue a cláusula Group By e Order By é que a cláusula Group By é usada quando queremos aplicar a função agregada a mais de um conjunto de tuplas e a cláusula Order By é usada quando queremos ordenar os dados obtidos pela consulta. Vamos discutir algumas diferenças entre a cláusula Group By e a cláusula Order By com a ajuda do gráfico de comparação mostrado abaixo.

Gráfico de comparação

Base para ComparaçãoAgrupar porOrdenar por
BasicAgrupar por é usado para formar o grupo do conjunto das tuplas.Order By é usado para organizar os dados obtidos como resultado de uma consulta no formulário Ordenado.
AtributoAtributo na função Aggregate não pode estar na cláusula Group By.Atributo sob agregado pode estar em ordem por cláusula.
ChãoFeito com base na semelhança entre os valores dos atributos.Feito no terreno de ordem crescente e decrescente.

Definição de grupo por cláusula

Funções agregadas como avg, min, max, soma, contagem são aplicadas ao conjunto único de tuplas. No caso, se você quiser aplicar as funções agregadas ao grupo do conjunto de tuplas, então temos a cláusula Group by para isso. Agrupar por cláusula agrupa as tuplas que possuem o mesmo valor de atributo.

Há uma coisa a lembrar sobre a cláusula Group By, certifique-se de que o atributo sob a cláusula Group By deve aparecer na cláusula SELECT, mas não sob uma função agregada . Se a cláusula Group By contiver um atributo que não esteja sob a cláusula SELECT ou se estiver sob a cláusula SELECT, mas sob a função agregada, a consulta se tornará incorreta. Portanto, podemos dizer que a cláusula Group By é sempre usada em colaboração com a cláusula SELECT.

Vamos dar um exemplo para entender a cláusula Group By.

SELECT Departamento _ID, avg (Salary) como avg_salary do grupo de professores por Department_ID.

Você pode ver que inicialmente é formado um resultado intermediário que agrupou os departamentos.

Em seguida, a função agregada avg é aplicada a cada grupo de departamentos e o resultado é mostrado abaixo.

Definição de ordem por cláusula

A cláusula Order By é usada para exibir dados obtidos por uma consulta na ordem classificada. Como a cláusula Group By, a cláusula Order By também é usada em colaboração com a cláusula SELECT. Se você não mencionar a ordem de classificação, a cláusula Order By classifica os dados na ordem crescente. Você pode especificar a ordem crescente como asc e descendente como desc .

Vamos entender o funcionamento da cláusula Order By com a ajuda do exemplo a seguir. Temos uma tabela de professores e aplicarei a classificação a duas colunas Department_Id and Salary, da tabela Teacher.

Selecione Department_ID, Salary From Teacher Order por Department_Id asc, Salary desc.

Você pode ver que primeiro, organiza o departamento _ID em ordem crescente e, em seguida, organiza os salários no mesmo departamento em ordem decrescente.

Principais diferenças entre agrupar e ordenar por

  1. A cláusula Group By agrupa o conjunto de tuplas em uma relação que está sob a cláusula SELECT. Por outro lado, a cláusula Order By classifica o resultado da consulta em ordem crescente ou decrescente.
  2. O atributo na função agregada não pode estar na cláusula Group By, enquanto o atributo na função agregada pode estar lá na cláusula Order By.
  3. O agrupamento de tuplas é feito com base na similaridade entre os valores de atributos das tuplas. Por outro lado, a ordenação ou classificação é feita com base na ordem crescente ou decrescente.

Conclusão:

Se você quiser formar o grupo do conjunto de tuplas, use a cláusula Group By. Caso você queira organizar os dados de uma única coluna ou, mais de uma coluna no conjunto de tuplas em ordem crescente ou decrescente, a cláusula Order By deve ser usada.

Top