MySQL GROUP BY (Italiano)

Riepilogo: in questo tutorial, imparerai come usare MySQL GROUP BY per raggruppare le righe in sottogruppi in base ai valori di colonne o espressioni.

Introduzione a MySQL GROUP BY clause

La clausolaGROUP BY raggruppa un insieme di righe in un insieme di righe di riepilogo per valori di colonne o espressioni. La clausolaGROUP BY restituisce una riga per ogni gruppo. In altre parole, riduce il numero di righe nel set di risultati.,

Si utilizza spesso il GROUP BY clausola con funzioni di aggregazione come SUM AVG MAX MIN e COUNT. La funzione di aggregazione che appare nella clausola SELECT fornisce informazioni su ciascun gruppo.

La clausola GROUP BY è una clausola facoltativa dell’istruzione SELECT., Di seguito viene illustrata la sintassi della clausolaGROUP BY:

La clausolaGROUP BY deve apparire dopo le clausoleFROM eWHERE. Seguendo le parole chiaveGROUP BY è un elenco di colonne o espressioni separate da virgole che si desidera utilizzare come criteri per raggruppare le righe.,

MySQL evaluates the GROUP BY clause after the FROM, WHERE and SELECT clauses and before the HAVING , ORDER BY and LIMIT clauses:

MySQL GROUP BY examples

Let’s take some example of using the GROUP BY clause.,

A) GRUPPO MySQL semplice PER esempio

Diamo un’occhiata alla tabellaorders nel database di esempio.,

si Supponga di voler gruppo di valori dell’ordine di stato in sottogruppi, si utilizza il tag GROUP BY clausola con il status colonna come la seguente query:

Code language: SQL (Structured Query Language) (sql)

Provare

Come si può vedere, GROUP BY clausola restituisce uniche occorrenze di status valori., Funziona come l’operatoreDISTINCT come mostrato nella seguente query:

Code language: SQL (Structured Query Language) (sql)

Provalo

B) Utilizzando MySQL GROUP BY con funzioni aggregate

Le funzioni aggregate consentono di eseguire il calcolo di un insieme di righe e restituire un singolo valore. La clausolaGROUP BY viene spesso utilizzata con una funzione aggregata per eseguire il calcolo e restituire un singolo valore per ciascun sottogruppo.,

Per esempio, se si desidera conoscere il numero di ordini in ogni stato, è possibile utilizzare il COUNT funzione GROUP BY clausola come segue:

Code language: SQL (Structured Query Language) (sql)

Provare

Consultare il seguente orders e orderdetails tabella.,

Per ottenere l’importo totale di tutti gli ordini per lo stato, unire il orders tabella con i orderdetails tabella e utilizzare il SUM funzione per calcolare l’importo totale. Vedere la seguente query:

Code language: SQL (Structured Query Language) (sql)

Provalo

Allo stesso modo, la seguente query restituisce i numeri d’ordine e l’importo totale di ogni ordine.,

Code language: SQL (Structured Query Language) (sql)

Provalo

C) GRUPPO MySQL con expression example

In oltre alle colonne, è possibile raggruppare le righe per espressioni. La seguente query ottiene il totale delle vendite per ogni anno.

Provalo

In questo esempio, abbiamo usato la funzione YEAR per estrarre i dati dell’anno dalla data dell’ordine ( orderDate)., Abbiamo incluso solo gli ordini con shipped stato nel totale delle vendite. Si noti che l’espressione che appare nella clausola SELECT deve essere uguale a quella nella clausola GROUP BY.

D) Utilizzo di MySQL GROUP BY con la clausola HAVING example

Per filtrare i gruppi restituiti dalla clausolaGROUP BY, si utilizza una clausolaHAVING. La seguente query utilizza la clausola HAVING per selezionare le vendite totali degli anni successivi al 2003.,

Code language: SQL (Structured Query Language) (sql)

Provare

La clausola GROUP BY: MySQL vs standard SQL

SQL Standard non consente di utilizzare un alias nel GROUP BY clausola, tuttavia, MySQL supporta questo.

Ad esempio, la query seguente estrae l’anno dalla data dell’ordine. Prima utilizzayear come alias dell’espressioneYEAR(orderDate) e quindi utilizza l’aliasyear nella clausolaGROUP BY., Questa query non è valida in SQL standard.

Provalo

MySQL permette anche di ordinare i gruppi in ordine crescente o decrescente, mentre lo standard SQL non lo fa. L’ordine predefinito è crescente., Per esempio, se si desidera di ottenere il numero di ordini da parte di stato e l’ordinamento dello stato in ordine decrescente, è possibile utilizzare il GROUP BY clausola con DESC come la seguente query:

Code language: SQL (Structured Query Language) (sql)

Provare

si Noti che abbiamo usato DESC nel GROUP BY clausola di ordinare l’ status in ordine decrescente., Potremmo anche specificare esplicitamente ASC nella clausola GROUP BY per ordinare i gruppi in base allo stato in ordine crescente.

In questo tutorial, ti abbiamo mostrato come usare la clausola MySQL GROUP BY per raggruppare le righe in sottogruppi in base ai valori di colonne o espressioni.

  • Questo tutorial è stato utile?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Vai alla barra degli strumenti