Questo articolo spiega la panoramica completa delle clausole GROUP BY e ORDER BY. Vengono utilizzati principalmente per organizzare i dati ottenuti tramite query SQL. La differenza tra queste clausole è uno dei punti più comuni in cui rimanere bloccati durante l’apprendimento SQL . La differenza principale tra loro è questa la clausola GROUP BY è applicabile quando vogliamo utilizzare funzioni aggregate su più di un insieme di righe. La clausola ORDER BY è applicabile quando vogliamo ottenere i dati ottenuti da una query nell'ordinamento . Prima di effettuare il confronto, conosceremo innanzitutto queste clausole SQL.
ORDINA PER Clausola
La clausola ORDER BY viene utilizzata nelle query SQL per ordinare i dati restituiti da una query in ordine crescente o decrescente. Se omettiamo l'ordinamento, per impostazione predefinita il risultato riepilogato viene ordinato in ordine crescente. La clausola ORDER BY, come la clausola GROUP BY, potrebbe essere utilizzata insieme all'istruzione SELECT. ASC denota ordine ascendente, mentre DESC denota ordine discendente.
Di seguito è riportata la sintassi per utilizzare la clausola ORDER BY in un'istruzione SQL:
imbottitura np
SELECT expressions FROM tables [WHERE conditions] ORDER BY expression [ ASC | DESC ];
Cerchiamo di capire come funziona la clausola ORDER BY con l'aiuto del seguente esempio. Supponiamo di avere un tavolo sviluppatore che contiene i seguenti dati:
Possiamo vedere che questi risultati non vengono visualizzati in modo organizzato. Supponiamo di voler organizzare i risultati in ordine crescente o decrescente in base a colonna di stato . In tal caso, avremmo bisogno del comando ORDER BY per ottenere il risultato desiderato. Possiamo farlo eseguendo il comando come segue:
mysql> SELECT D_name, D_state, D_salary FROM developers ORDER BY D_state ASC;
Ecco l'output in cui otterremo i risultati desiderati:
Clausola GRUPPO PER
La clausola GROUP BY viene utilizzata nelle query SQL per organizzare i dati che hanno gli stessi valori di attributo. Di solito lo usiamo con l'istruzione SELECT . È sempre necessario ricordare che dobbiamo inserire la clausola GROUP BY dopo la clausola WHERE. Inoltre, viene inserito prima della clausola ORDER BY.
Spesso possiamo utilizzare questa clausola in collaborazione con funzioni aggregate come SUM, AVG, MIN, MAX e COUNT per produrre report di riepilogo dal database. È importante ricordare che l'attributo in questa clausola deve apparire nella clausola SELECT, non in una funzione aggregata. Se lo facessimo, la query sarebbe errata. Di conseguenza, la clausola GROUP BY viene sempre utilizzata insieme alla clausola SELECT. La query per la clausola GROUP BY è una query raggruppata e restituisce una singola riga per ogni oggetto raggruppato.
pseudocodice Java
Di seguito è riportata la sintassi per utilizzare la clausola GROUP BY in un'istruzione SQL:
SELECT column_name, function(column_name) FROM table_name WHERE condition GROUP BY column_name;
Cerchiamo di capire come funziona la clausola GROUP BY con l'aiuto di un esempio. Qui lo dimostreremo con la stessa tabella.
Supponiamo di volerlo sapere stipendio medio dello sviluppatore in un particolare stato e organizzare i risultati in ordine decrescente in base alla colonna dello stato. In tal caso, avremmo bisogno sia del comando GROUP BY che di ORDER BY per ottenere il risultato desiderato. Possiamo farlo eseguendo il comando come segue:
mysql> SELECT D_state, avg(D_salary) AS salary FROM developers GROUP BY D_state ORDER BY D_state DESC;
Questa query inizialmente ha formato un risultato intermedio che ha raggruppato lo stato. Successivamente, il AVG viene eseguita su ciascun gruppo di stati, quindi ordiniamo il risultato in ordine decrescente e, infine, otterremo i risultati desiderati come mostrato di seguito:
Differenze chiave tra GRUPPO PER e ORDINE PER
Di seguito sono riportate le principali distinzioni tra le clausole Group By e Order By:
- La clausola Group By viene utilizzata per raggruppare i dati in base allo stesso valore in una colonna specifica. La clausola ORDER BY, invece, ordina il risultato e lo mostra in ordine crescente o decrescente.
- È obbligatorio utilizzare la funzione aggregata per utilizzare Raggruppa per. D'altra parte, non è obbligatorio utilizzare la funzione aggregata per utilizzare Order By.
- L'attributo non può trovarsi nell'istruzione GROUP BY nella funzione aggregata, mentre l'attributo può trovarsi nell'istruzione ORDER BY nella funzione aggregata.
- La clausola Group By controlla la presentazione delle tuple, il che significa che il raggruppamento viene eseguito in base alla somiglianza tra i valori degli attributi della riga. Al contrario, la clausola ORDER BY controlla la presentazione delle colonne, il che significa che l'ordinamento viene eseguito in base ai valori degli attributi della colonna in ordine ascendente o discendente.
- GROUP BY viene sempre inserito dopo la clausola WHERE ma prima dell'istruzione ORDER BY. D'altra parte, ORDER BY viene sempre utilizzato dopo l'istruzione GROUP BY.
Grafico comparativo GRUPPO PER e ORDINE PER
La seguente tabella comparativa spiega rapidamente le principali differenze:
SN | RAGGRUPPA PER | ORDINATO DA |
---|---|---|
1. | Viene utilizzato per raggruppare le righe che hanno gli stessi valori. | Ordina il set di risultati in ordine crescente o decrescente. |
2. | Potrebbe essere consentito nell'istruzione CREATE VIEW. | Non è consentito nell'istruzione CREATE VIEW |
3. | Controlla la presentazione delle righe. | Controlla la presentazione delle colonne. |
4. | L'attributo non può trovarsi nella funzione aggregata nell'istruzione GROUP BY. | L'attributo può trovarsi nella funzione aggregata nell'istruzione ORDER BY. |
5. | Viene sempre utilizzato prima della clausola ORDER BY nell'istruzione SELECT. | Viene sempre utilizzato dopo la clausola GROUP BY nell'istruzione SELECT. |
6. | È obbligatorio utilizzare le funzioni aggregate in GROUP BY. | Non è obbligatorio utilizzare funzioni aggregate in ORDER BY. |
7. | In questo caso il raggruppamento viene effettuato in base alla somiglianza tra i valori degli attributi della riga. | Qui, il set di risultati viene ordinato in base ai valori degli attributi della colonna, in ordine crescente o decrescente. |
Conclusione
Le clausole GROUP BY e ORDER BY vengono confrontate in questo articolo. Entrambe le clausole sono funzionalità del database SQL estremamente utili. Quando vogliamo formare un gruppo di righe, utilizziamo la clausola GROUP BY. Se vogliamo organizzare i dati in ordine crescente o decrescente in base a una particolare colonna, utilizziamo la clausola ORDER BY. Non hanno alcuna relazione perché entrambi vengono utilizzati per due scopi diversi. Tuttavia, possiamo combinarli per servire a scopi speciali o usarli individualmente a seconda delle circostanze. Possiamo usare queste clausole solo con l'istruzione SELECT.
convertire booleano in stringa