MySQL - clausola GROUP BY

Puoi usare GROUP BYper raggruppare i valori da una colonna e, se lo desideri, eseguire calcoli su quella colonna. È possibile utilizzare le funzioni COUNT, SUM, AVG e così via nella colonna raggruppata.

Capire GROUP BY clausola, considera un employee_tbl tabella, che contiene i seguenti record:

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)

Supponiamo ora di voler contare il numero di giorni in cui ciascun dipendente ha lavorato in base alla tabella precedente.

Se scriveremo una query SQL come segue, otterremo il seguente risultato:

mysql> SELECT COUNT(*) FROM employee_tbl;
+---------------------------+
|          COUNT(*)         |
+---------------------------+
|             7             |
+---------------------------+

Ma questo non serve al nostro scopo, vogliamo visualizzare il numero totale di pagine digitate da ogni persona separatamente. Questo viene fatto utilizzando funzioni aggregate insieme a un fileGROUP BY clausola come segue -

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)

Vedremo più funzionalità relative a GROUP BY in altre funzioni come SUM, AVG, ecc.

mysql-funzioni-utili.htm