MySQL - Cláusula GROUP BY
Você pode usar GROUP BYpara agrupar valores de uma coluna e, se desejar, execute cálculos nessa coluna. Você pode usar as funções COUNT, SUM, AVG, etc. na coluna agrupada.
Para entender GROUP BY cláusula, considere uma employee_tbl tabela, que está tendo os seguintes registros -
mysql> SELECT * FROM employee_tbl;
+------+------+------------+--------------------+
| id | name | work_date | daily_typing_pages |
+------+------+------------+--------------------+
| 1 | John | 2007-01-24 | 250 |
| 2 | Ram | 2007-05-27 | 220 |
| 3 | Jack | 2007-05-06 | 170 |
| 3 | Jack | 2007-04-06 | 100 |
| 4 | Jill | 2007-04-06 | 220 |
| 5 | Zara | 2007-06-06 | 300 |
| 5 | Zara | 2007-02-06 | 350 |
+------+------+------------+--------------------+
7 rows in set (0.00 sec)
Agora, suponha que, com base na tabela acima, desejemos contar o número de dias que cada funcionário trabalhou.
Se escrevermos uma consulta SQL da seguinte forma, obteremos o seguinte resultado -
mysql> SELECT COUNT(*) FROM employee_tbl;
+---------------------------+
| COUNT(*) |
+---------------------------+
| 7 |
+---------------------------+
Mas isso não está servindo ao nosso propósito, queremos mostrar o número total de páginas digitadas por cada pessoa separadamente. Isso é feito usando funções agregadas em conjunto com umGROUP BY cláusula da seguinte forma -
mysql> SELECT name, COUNT(*)
-> FROM employee_tbl
-> GROUP BY name;
+------+----------+
| name | COUNT(*) |
+------+----------+
| Jack | 2 |
| Jill | 1 |
| John | 1 |
| Ram | 1 |
| Zara | 2 |
+------+----------+
5 rows in set (0.04 sec)
Veremos mais funcionalidades relacionadas a GROUP BY em outras funções como SUM, AVG, etc.