Eu entendo o objetivo de GROUP BY x
Mas como
GROUP BY x, y
funciona e o que isso significa?
Eu entendo o objetivo de GROUP BY x
Mas como
GROUP BY x, y
funciona e o que isso significa?
Respostas:
Group By X
significa colocar todos aqueles com o mesmo valor para X no grupo .
Group By X, Y
significa colocar todos aqueles com os mesmos valores para X e Y em um grupo .
Para ilustrar usando um exemplo, digamos que temos a tabela a seguir, relacionada a quem está cursando o assunto em uma universidade:
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
Quando você usa apenas uma group by
coluna no assunto; dizer:
select Subject, Count(*)
from Subject_Selection
group by Subject
Você receberá algo como:
Subject Count
------------------------------
ITB001 5
MKB114 2
... porque existem 5 entradas para ITB001 e 2 para MKB114
Se tivéssemos group by
duas colunas:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
nós conseguiríamos isso:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
Isso ocorre porque, quando agrupamos por duas colunas, está dizendo "Agrupe-as para que todas as pessoas com o mesmo Assunto e Semestre estejam no mesmo grupo e calcule todas as funções agregadas (Contagem, Soma, Média, etc.) ) para cada um desses grupos " . Neste exemplo, isso é demonstrado pelo fato de que, quando os contamos, há três pessoas fazendo ITB001 no semestre 1 e duas no semestre 2. As duas pessoas que fazem MKB114 estão no semestre 1, portanto, não há linha para o semestre 2 (nenhum dado se encaixa no grupo "MKB114, semestre 2")
Espero que isso faça sentido.
GROUP BY A,B
é o mesmo que GROUP BY B,A
?
GROUP BY a, b
e GROUP BY a AND b
uma vez que o segundo lista apenas itens agrupados com exatamente o mesmo conteúdo e sem "subgrupos". Nesse caso, a saída seria a mesma que a primeira.
A GROUP BY
cláusula é usada em conjunto com as funções agregadas para agrupar o conjunto de resultados por uma ou mais colunas. por exemplo:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Lembre-se desta ordem:
1) SELECT (é usado para selecionar dados de um banco de dados)
2) FROM (a cláusula é usada para listar as tabelas)
3) WHERE (a cláusula é usada para filtrar registros)
4) GROUP BY (a cláusula pode ser usada em uma instrução SELECT para coletar dados em vários registros e agrupar os resultados por uma ou mais colunas)
5) HAVING (a cláusula é usada em combinação com a cláusula GROUP BY para restringir os grupos de linhas retornadas apenas àqueles cuja condição é VERDADEIRA)
6) ORDER BY (a palavra-chave é usada para classificar o conjunto de resultados)
Você pode usar tudo isso se estiver usando funções agregadas, e essa é a ordem em que elas devem ser definidas, caso contrário, você poderá obter um erro.
As funções agregadas são:
MIN retorna o menor valor em uma determinada coluna
SUM retorna a soma dos valores numéricos em uma determinada coluna
AVG retorna o valor médio de uma determinada coluna
COUNT retorna o número total de valores em uma determinada coluna
COUNT (*) retorna o número de linhas em uma tabela