English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come raggruppare le righe in base ai valori delle colonne.
GROUP BY in congiunzione conSELECTespressioni efunzioni aggregateusati insieme, per raggruppare le righe in base ai valori delle colonne comuni
Per facilitare la comprensione di questo punto, diamo un'occhiata a quanto segueemployeesedepartments表。
+--------+--------------+------------+---------+ | emp_id | emp_name | hire_date | dept_id | +--------+--------------+------------+---------+ | | 1 | Ethan Hunt | 2001-05-01 | 4 | | | 2 | Tony Montana | 2002-07-15 | 1 | | | 3 | Sarah Connor | 2005-10-18 | 5 | | | 4 | Rick Deckard | 2007-01-03 | 3 | | | 5 | Martin Blank | 2008-06-24 | NULL | +--------+--------------+------------+---------+ | +---------+------------------+ | dept_id | dept_name | +---------+------------------+ | | 1 | Administration | | | 2 | Customer Service | | | 3 | Finance | | | 4 | Human Resources | | | 5 | Sales | | +---------+------------------+ | |
Tabella: employees | Tabella: departments |
Ora, non si cerca solo il nome del dipendente e del dipartimento in cui lavora, ma si cerca anche il numero totale di dipendenti in ogni dipartimento.
Per tabelle di piccole dimensioni, è possibile applicare semplicementeUnione a sinistraCalcolare il numero di dipendenti, ma supponiamo che se una tabella contiene migliaia di dipendenti, non sarà così facile.
In questo caso, è possibile utilizzare la clausola GROUP BY insieme all'istruzione SELECT, come segue:
SELECT t1.dept_name, count(t2.emp_id) AS total_employees FROM departments AS t1 LEFT JOIN employees AS t2 ON t1.dept_id = t2.dept_id GROUP BY t1.dept_name;
Se eseguite l'istruzione sopra, otterrete l'output seguente:
+-------------------+-----------------+ | dept_name | | total_employees | +-------------------+-----------------+ | Administration | | | | 1 | | Customer Service | 0 | | Finance | 1 | | Human Resources | 1 | | Sales | 1 | +-------------------+-----------------+
Nel capitolo successivo, imparerai come utilizzare la clausola HAVING e la clausola GROUP BY per specificare le condizioni di ricerca per i gruppi o l'aggregazione.