Mescolare funzioni di aggregazione su MySQL

March 7

Mescolare funzioni di aggregazione su MySQL


Il software MySQL open-source per la gestione di database utilizza la Structured Query Language standard di settore per le transazioni di dati e di manutenzione del database. Come con altri dialetti SQL, MySQL offre una serie di funzioni di aggregazione che svolgono la matematica statistiche sui gruppi di dati. È possibile combinare queste funzioni con matematica standard nei programmi, ma solo a determinate condizioni.

Funzioni di aggregazione

Anche se la maggior parte delle funzioni matematiche in SQL fare calcoli un record alla volta, funzioni di aggregazione restituiscono i risultati per tutti i record in un set di dati o di un gruppo di record in un set. Ad esempio, il "AVG ()" funzione prende la media del campo specificato per tutti i record restituiti da una "select", come il seguente codice SQL illustra:

SELEZIONA AVG (total_sales) FROM clienti WHERE stato = 'NY';

Questa dichiarazione mostra le vendite totali medi per tutti i clienti in stato di New York. Esso mostra un singolo numero. Si può anche rompere le medie per Stato, come in questa dichiarazione:

stato SELECT, AVG (total_sales) da parte dei clienti GROUP BY Stato;

Questo visualizza una linea per ogni stato, dando il dato medio di vendita per tutti i clienti nello stato.

matematica standard

Le funzioni matematiche standard in MySQL includono addizione, sottrazione, moltiplicazione e divisione, la trigonometria, esponenziali e molti altri. Per i campi di una tabella, mySQL esegue la matematica su ogni record. Ad esempio, per visualizzare le vendite totali per un record di ordine, è possibile moltiplicare il prezzo unitario per la quantità ordinata come questa istruzione SQL mostra:

SELEZIONE unit_price, qty_ordered, unit_price * qty ordinato dagli ordini;

La seguente istruzione SELECT non funziona, però:

SELEZIONE unit_price * qty_ordered, AVG (unit_price) dagli ordini;

La dichiarazione tenta di mescolare funzioni di aggregazione e matematica standard in modo inappropriato. La funzione AVG () restituisce un singolo valore, anche se il unit_price * Calcolo qty_ordered potrebbe restituire migliaia di valori. Non si può avere entrambe le cose in una singola istruzione.

Aggregati di miscelazione

È possibile utilizzare diverse funzioni di aggregazione in una singola istruzione SQL. Questo funziona perché ogni aggregato restituisce un singolo valore. Ad esempio, se si desidera che il prezzo massimo medio, minimo e in una tabella di ordini, è possibile utilizzare la seguente dichiarazione:

SELEZIONA AVG (unit_price), MIN (unit_price), MAX (unit_price) dagli ordini;

Miscelazione Aggregati con campi e Funzioni standard

Mescolate aggregati con campi standard raggruppando record contemporaneamente, come la seguente dichiarazione mostra:

SELEZIONE product_number, AVG (unit_price), MIN (unit_price), MAX (unit_price) dagli ordini GROUP BY product_number;

Questo visualizza una linea per il numero di prodotto, che mostra il prodotto con il prezzo massimo medio, minimo e massimo. È possibile combinare le funzioni standard e aggregati fino a quando si registra gruppo insieme, come nel codice seguente SQL:

SELEZIONE product_number, cost_per_m / 1000, AVG (unit_price), MIN (unit_price), MAX (unit_price) dagli ordini GROUP BY product_number;

Questa affermazione calcola un costo singolo elemento basato su un "costo per mille", o costo per 1.000 unità, e visualizza questa figura insieme con la media, prezzo minimo e massimo. È possibile combinare le funzioni standard e di aggregazione, se le funzioni standard si applicano agli aggregati, come mostra questo esempio:

SELEZIONE AVG (unit_price), COUNT (unit_price), AVG (unit_price) * COUNT (unit_price) dagli ordini;

Qui, l'istruzione SELECT moltiplica i risultati del AVG () e COUNT () funzioni insieme.