Capisco il punto di GROUP BY x
Ma come
GROUP BY x, y
funziona e cosa significa?
Capisco il punto di GROUP BY x
Ma come
GROUP BY x, y
funziona e cosa significa?
Risposte:
Group By X
significa mettere tutti quelli con lo stesso valore per X in un gruppo .
Group By X, Y
significa mettere tutti quelli con gli stessi valori sia per X che per Y in un gruppo .
Per illustrare usando un esempio, supponiamo di avere la seguente tabella, che riguarda chi frequenta la materia in un'università:
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
Quando si utilizza a group by
solo nella colonna soggetto; dire:
select Subject, Count(*)
from Subject_Selection
group by Subject
Otterrai qualcosa di simile a:
Subject Count
------------------------------
ITB001 5
MKB114 2
... perché ci sono 5 voci per ITB001 e 2 per MKB114
Se fossimo su group by
due colonne:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
otterremmo questo:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
Questo perché, quando raggruppiamo per due colonne, sta dicendo "Raggruppali in modo che tutti quelli con lo stesso Soggetto e Semestre siano nello stesso gruppo e quindi calcolino tutte le funzioni aggregate (Conteggio, Somma, Media, ecc. ) per ciascuno di tali gruppi " . In questo esempio, questo è dimostrato dal fatto che, quando li contiamo, ci sono tre persone che fanno ITB001 nel semestre 1 e due che lo fanno nel semestre 2. Entrambe le persone che fanno MKB114 sono nel semestre 1, quindi non c'è riga per il secondo semestre (nessun dato rientra nel gruppo "MKB114, semestre 2")
Spero che abbia senso.
GROUP BY A,B
è lo stesso GROUP BY B,A
?
GROUP BY a, b
e GROUP BY a AND b
poiché la seconda elenca solo gli elementi raggruppati con esattamente lo stesso contenuto e senza "sottogruppi". In questo caso l'output sarebbe uguale al primo.
La GROUP BY
clausola viene utilizzata insieme alle funzioni di aggregazione per raggruppare il set di risultati per una o più colonne. per esempio:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Ricorda questo ordine:
1) SELEZIONA (viene utilizzato per selezionare i dati da un database)
2) FROM (la clausola viene utilizzata per elencare le tabelle)
3) DOVE (la clausola viene utilizzata per filtrare i record)
4) GROUP BY (la clausola può essere utilizzata in un'istruzione SELECT per raccogliere dati su più record e raggruppare i risultati per una o più colonne)
5) HAVING (la clausola viene utilizzata in combinazione con la clausola GROUP BY per limitare i gruppi di righe restituite solo a quelli la cui condizione è TRUE)
6) ORDER BY (la parola chiave viene utilizzata per ordinare il set di risultati)
È possibile utilizzare tutte queste funzioni se si utilizzano funzioni di aggregazione e questo è l'ordine in cui devono essere impostate, altrimenti è possibile ottenere un errore.
Le funzioni aggregate sono:
MIN restituisce il valore più piccolo in una determinata colonna
SOMMA restituisce la somma dei valori numerici in una determinata colonna
AVG restituisce il valore medio di una determinata colonna
COUNT restituisce il numero totale di valori in una determinata colonna
COUNT (*) restituisce il numero di righe in una tabella