Nelle espressioni della clausola di proiezione (SELECT
) si possono avere anche funzioni che calcolano valori a partire da insiemi di tuple. Esse sono dette funzioni di gruppo:
SELECT
si possono specificare più funzioni di gruppo contemporaneamente, anche su attributi diversi, ma non si può avere un misto di funzioni di gruppo e attributi/espressioni "normali" (perchè il risultato è una singola tupla, quindi non può contenere tutti i valori di una colonna).Le principali funzioni di gruppo previste da SQL sono:
MAX
: determina il massimo di un insieme di valoriMIN
: determina il minimo di un insieme di valoriSUM
: calcola la somma dei valori di un insiemeAVG
: calcola la media dei valori di un insiemeCOUNT
: determina la cardinalità di un insiemeAd eccezione di COUNT
, quesste funzioni si applicano solo su insiemi di valori semplici, e non su insiemi di tuple. In particolare, SUM
e AVG
sono definite solo per insiemi di valori numerici.
L'insieme di valori è denotato nel caso più semplice dal nome di una colonna, ma in generale può essere una qualsiasi espressione contenente nomi di colonne. Inoltre, queste funzioni possono a loro volta essere usate all'interno di espresioni aritmetiche (composte da valori costanti o altre funzioni di gruppo, ma non nomi di colonne)
Eventuali valori nulli vengono eliminati dall'insieme prima del calcolo della funzione di gruppo. Se l'insieme dei valori è vuoto (dopo l'eventuale rimozione dei valori nulli), COUNT
restituisce 0, mentre le altre funizioni restituiscono NULL
.
COUNT
La funzione di gruppo COUNT
può avere come argomento
*
, per contare il numero di tupleDISTINCT
Tutte le funzioni di gruppo possono essere usate con il qualificcatore DISTINCT
, per eliminare eventuali valori duplicati prima di applicare la funzione.
L'eliminazione dei duplicati è significativa (cioè ha effetto sul risultato) solo per le funzioni SUM
, AVG
e COUNT
(e comunque, si usa soprattutto per COUNT
).