6.1 Elenco delle funzioni aggregate
Quando si utilizza il raggruppamento di righe in SQL con operator GROUP BY
, è possibile utilizzare SELECT
le funzioni nell'istruzione che operano sui dati raggruppati. Tali funzioni sono anche chiamate funzioni di aggregazione.
Ecco un elenco di quelli più popolari:
# | Funzione | Descrizione |
---|---|---|
1 | CONTARE() | Restituisce il numero di valori in un gruppo |
2 | SOMMA() | Restituisce la somma dei valori in un gruppo |
3 | MASSIMO() | Restituisce il valore massimo di un gruppo |
4 | MIN() | Restituisce il valore minimo di un gruppo |
5 | MEDIO() | Restituisce la media di un gruppo |
6 | BIT_AND() | Esegue un AND bit per bit su tutti i valori del gruppo |
7 | BIT_OR() | Esegue un OR bit per bit su tutti i valori del gruppo |
8 | BIT_XOR() | Esegue un XOR bit per bit su tutti i valori del gruppo |
9 | GRUPPO_CONCAT() | Concatena tutti i valori di gruppo in una stringa |
Ora diamo un'occhiata ad alcuni esempi con le nostre funzioni di aggregazione.
6.2 Analizzare le retribuzioni dei dipendenti
Calcoliamo alcune statistiche sui nostri dipendenti dalla tabella dei dipendenti .
Domanda uno: quanti dipendenti abbiamo?
Se vogliamo scoprire il numero di tutti i record nella tabella, allora possiamo usare la funzione aggregata per questo COUNT
. La richiesta sarà simile a questa:
SELECT COUNT(*) FROM employee
E MySQL restituirà come risposta il numero 6. Abbiamo 6 dipendenti nel dipartimento, incluso un gatto. Va bene.
Domanda due: quanto paghiamo al mese a tutti i dipendenti?
Per rispondere a questa domanda, dobbiamo sommare gli stipendi di tutti i dipendenti. Per fare ciò, utilizziamo la funzione aggregataSUM()
La richiesta sarà simile a questa:
SELECT SUM(salary) FROM employee
Si noti che questa volta ci viene richiesto di specificare i valori di quale colonna stiamo riepilogando. Abbiamo specificato una colonna stipendio . Non possiamo semplicemente sommare tutti i campi in una tabella.
E MySQL restituirà come risposta il numero 461000. Abbiamo 6 dipendenti nel dipartimento e lo stipendio è di 461mila. Troppo.
E infine, la terza domanda: quali sono i nostri stipendi massimi e minimi nel dipartimento? Bene, calcoliamo lo stipendio medio. Per fare ciò, abbiamo bisogno delle funzioni MIN
, MAX
e AVG
.
La query sarà un po' più complessa questa volta e sarà simile a questa:
SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee
Il risultato di questa query sarà:
MIN(stipendio) | MEDIA (stipendio) | MASSIMO(stipendio) |
---|---|---|
1000 | 76833.3333 | 200000 |
Il salario minimo nel nostro dipartimento è di $ 1.000, molto buono. Lo stipendio massimo è di 200mila, ma questo è il regista.
Ma lo stipendio medio è troppo alto, devi in qualche modo ottimizzare i costi. Assumiamo un altro gatto e basta :)