Tutorial sulle funzioni di MySQL Aggregate: SUM, AVG, MAX, MIN, COUNT, DISTINCT

Anonim

Le funzioni aggregate riguardano tutto

  • Esecuzione di calcoli su più righe
  • Di una singola colonna di una tabella
  • E restituendo un singolo valore.

Lo standard ISO definisce cinque (5) funzioni aggregate e cioè;

1) COUNT

2) SOMMA
3) MEDIA
4) MIN
5) MAX

Perché utilizzare le funzioni aggregate.

Da una prospettiva aziendale, diversi livelli di organizzazione hanno requisiti di informazione differenti. I manager di alto livello sono solitamente interessati a conoscere figure intere e non sono necessari i dettagli individuali.

> Le funzioni aggregate ci consentono di produrre facilmente dati riepilogati dal nostro database.

Ad esempio, dal nostro database myflix, la gestione potrebbe richiedere i seguenti rapporti

  • Film meno noleggiati.
  • Film più noleggiati.
  • Numero medio di noleggi di ogni film in un mese.

Produciamo facilmente i rapporti di cui sopra utilizzando funzioni aggregate.

Esaminiamo in dettaglio le funzioni aggregate.

Funzione COUNT

La funzione COUNT restituisce il numero totale di valori nel campo specificato. Funziona su tipi di dati numerici e non numerici. Tutte le funzioni aggregate per impostazione predefinita escludono i valori null prima di lavorare sui dati.

COUNT (*) è un'implementazione speciale della funzione COUNT che restituisce il conteggio di tutte le righe in una tabella specificata. COUNT (*) considera anche Null e duplicati.

La tabella mostrata di seguito mostra i dati nella tabella movierentals

numero di riferimento data_ transazione data di ritorno numero_appartenenza movie_id film_ restituito
11 20-06-2012 NULLO 1 1 0
12 22-06-2012 25-06-2012 1 2 0
13 22-06-2012 25-06-2012 3 2 0
14 21-06-2012 24-06-2012 2 2 0
15 23-06-2012 NULLO 3 3 0

Supponiamo di voler ottenere il numero di volte in cui il film con ID 2 è stato noleggiato

SELECT COUNT(`movie_id`) FROM `movierentals` WHERE `movie_id` = 2;

L'esecuzione della query precedente nel workbench MySQL su myflixdb ci dà i seguenti risultati.

 
COUNT('movie_id')
3

Parola chiave DISTINCT

La parola chiave DISTINCT che ci consente di omettere i duplicati dai nostri risultati. Ciò si ottiene raggruppando insieme valori simili.

Per apprezzare il concetto di Distinct, eseguiamo una semplice query

SELECT `movie_id` FROM `movierentals`;
 
movie_id
1
2
2
2
3

Ora eseguiamo la stessa query con la parola chiave distinta -

SELECT DISTINCT `movie_id` FROM `movierentals`;

Come mostrato di seguito, distinto omette i record duplicati dai risultati.

 
movie_id
1
2
3

Funzione MIN

La funzione MIN restituisce il valore più piccolo nel campo della tabella specificato .

Ad esempio, supponiamo di voler conoscere l'anno in cui è stato rilasciato il film più vecchio della nostra libreria, possiamo usare la funzione MIN di MySQL per ottenere le informazioni desiderate.

La seguente query ci aiuta a raggiungere questo obiettivo

SELECT MIN(`year_released`) FROM `movies`;

L'esecuzione della query precedente nel workbench MySQL su myflixdb ci dà i seguenti risultati.

 
MIN('year_released')
2005

Funzione MAX

Proprio come suggerisce il nome, la funzione MAX è l'opposto della funzione MIN. Si restituisce il più grande valore dal campo tabella specificata .

Supponiamo di voler ottenere l'anno in cui è stato rilasciato l'ultimo film nel nostro database. Possiamo facilmente utilizzare la funzione MAX per ottenere ciò.

L'esempio seguente restituisce l'ultimo film dell'anno rilasciato.

SELECT MAX(`year_released`) FROM `movies`;

L'esecuzione della query precedente nel workbench MySQL utilizzando myflixdb ci dà i seguenti risultati.

 
MAX('year_released')
2012

Funzione SOMMA

Supponiamo di volere un report che fornisca l'importo totale dei pagamenti effettuati finora. Possiamo usare la funzione MySQL SUM che restituisce la somma di tutti i valori nella colonna specificata . SUM funziona solo sui campi numerici . I valori nulli vengono esclusi dal risultato restituito.

La tabella seguente mostra i dati nella tabella dei pagamenti-

payment_ id numero_appartenenza data di pagamento descrizione importo pagato riferimento_esterno _numero
1 1 23-07-2012 Pagamento del noleggio di film 2500 11
2 1 25-07-2012 Pagamento del noleggio di film 2000 12
3 3 30-07-2012 Pagamento del noleggio di film 6000 NULLO

La query mostrata di seguito ottiene tutti i pagamenti effettuati e li somma per restituire un unico risultato.

SELECT SUM(`amount_paid`) FROM `payments`;

L'esecuzione della query precedente nel workbench MySQL su myflixdb fornisce i seguenti risultati.

 
SUM('amount_paid')
10500

Funzione AVG

La funzione MySQL AVG restituisce la media dei valori in una colonna specificata . Proprio come la funzione SUM, funziona solo su tipi di dati numerici .

Supponiamo di voler trovare l'importo medio pagato. Possiamo utilizzare la seguente query:

SELECT AVG(`amount_paid`) FROM `payments`;

L'esecuzione della query precedente in MySQL workbench, ci dà i seguenti risultati.

 
AVG('amount_paid')
3500

Sommario

  • MySQL supporta tutte le cinque (5) funzioni aggregate standard ISO COUNT, SUM, AVG, MIN e MAX.
  • Le funzioni SUM e AVG funzionano solo su dati numerici.
  • Se desideri escludere valori duplicati dai risultati della funzione aggregata, utilizza la parola chiave DISTINCT. La parola chiave ALL include anche i duplicati. Se non viene specificato nulla, si assume come predefinito ALL.
  • Le funzioni aggregate possono essere utilizzate insieme ad altre clausole SQL come GROUP BY

Rompicapo

Pensi che le funzioni aggregate siano facili. Prova questo!

L'esempio seguente raggruppa i membri per nome, conta il numero totale di pagamenti, l'importo medio del pagamento e il totale generale degli importi dei pagamenti.

SELECT m.`full_names`,COUNT(p.`payment_id`) AS `paymentscount`,AVG(p.`amount_paid`) AS `averagepaymentamount`,SUM(p.`amount_paid`) AS `totalpayments` FROM members m, payments p WHERE m.`membership_number` = p.`membership_number` GROUP BY m.`full_names`;

L'esecuzione dell'esempio precedente in MySQL workbench ci dà i seguenti risultati.