Usando o grupo por em várias colunas

Eu entendo o ponto de GROUP BY x

Mas como GROUP BY x, y funciona e o que isso significa?

Group By X significa colocar todos aqueles com o mesmo valor para X em um 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 seguinte tabela, para fazer com quem está participando de um 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 um group by apenas na coluna de assunto; dizer:

 select Subject, Count(*) from Subject_Selection group by Subject 

Você terá algo como:

 Subject Count ------------------------------ ITB001 5 MKB114 2 

… porque existem 5 inputs para o ITB001 e 2 para o MKB114

Se fô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 porque, quando agrupamos por duas colunas, ele está dizendo “Agrupá-los para que todos os que tenham o mesmo Assunto e Semestre estejam no mesmo grupo e, em seguida, calculem todas as funções agregadas (Contagem, Soma, Média, etc.) ) para cada um desses grupos “ . Neste exemplo, isso é demonstrado pelo fato de que, quando contamos, há três pessoas fazendo o ITB001 no semestre 1, e duas fazendo no segundo semestre. Ambas as pessoas que estão fazendo o MKB114 estão no primeiro semestre, então não há linha para o semestre 2 (nenhum dado se encheckbox no grupo “MKB114, Semestre 2”)

Espero que isso faça sentido.

A cláusula GROUP BY é usada em conjunto com as funções agregadas para agrupar o conjunto de resultados em 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 database)

2) FROM (cláusula é usada para listar as tabelas)

3) WHERE (cláusula é usada para filtrar registros)

4) GROUP BY (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 (cláusula é usada em combinação com a cláusula GROUP BY para restringir os grupos de linhas retornadas apenas àquelas cuja condição é TRUE)

6) ORDER BY (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.

Funções agregadas são:

MIN retorna o menor valor em uma determinada coluna

SUM retorna a sum dos valores numéricos em uma determinada coluna

O 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