Come configurare smartphone e PC. Portale informativo
  • casa
  • notizia
  • Funzioni di aggregazione di ms sql. Raggruppamento in SQL: GROUP BY, clausole HAVING e funzioni di aggregazione

Funzioni di aggregazione di ms sql. Raggruppamento in SQL: GROUP BY, clausole HAVING e funzioni di aggregazione

Utilizzo di funzioni aggregate

SQL definisce molte funzioni integrate di varie categorie, tra le quali un posto speciale è occupato da funzioni aggregate che operano sui valori di colonna di un insieme di righe e restituiscono un unico valore. Gli argomenti delle funzioni aggregate possono essere sia colonne di tabella che i risultati di espressioni su di esse. Le funzioni aggregate possono esse stesse essere incluse in altre espressioni aritmetiche. La tabella seguente elenca le funzioni aggregate unari standard più comunemente utilizzate.


Il formato generale di una funzione aggregata unaria è il seguente:

nome_funzione (espressione [ALL | DISTINCT])

dove DISTINCT indica che la funzione deve considerare solo valori di argomento diversi e ALL - tutti i valori, inclusi i valori duplicati (questa è l'impostazione predefinita). Ad esempio, Funzione AVG con la parola chiave DISTINCT per le righe delle colonne con i valori 1, 1, 1 e 3 restituirà 2, e se la parola chiave ALL è presente, restituirà 1.5.

Le funzioni aggregate vengono utilizzate nelle clausole SELECT e HAVING. Qui esamineremo il loro uso nella clausola SELECT. In questo caso, l'espressione nell'argomento della funzione si applica a tutte le righe nella tabella di input della clausola SELECT. Inoltre, nella clausola SELECT, non è possibile utilizzare sia funzioni aggregate che colonne di tabella (o espressioni con esse) in assenza della clausola GROUP BY, che considereremo in sezione successiva.

La funzione COUNT ha due formati. Nel primo caso viene restituito il numero di righe nella tabella di input, nel secondo caso il numero di valori degli argomenti nella tabella di input:

  • CONTARE (*)
  • CONTE (espressione)

Il modo più semplice per usare questa funzione è contare il numero di righe in una tabella (tutte o soddisfacenti la condizione specificata). Per questo, viene utilizzata la prima sintassi.

Query: il numero di tipi di prodotti, le cui informazioni sono disponibili nel database.

SELEZIONA CONTEGGIO (*) AS "Numero di tipi di prodotti"

DA Prodotto

Nella seconda variante della sintassi per la funzione COUNT, il nome di una singola colonna può essere utilizzato come argomento. In questo caso, viene conteggiato il numero di tutti i valori in questa colonna della tabella di input o solo i valori non ripetuti (quando si utilizza la parola chiave DISTINCT).

Query: il numero di nomi distinti contenuti nella tabella Customer.

SELEZIONA CONTEGGIO (FNAME DISTINTO)

DA Cliente

L'uso del resto delle funzioni aggregate unarie è lo stesso di COUNT, tranne che per le funzioni MIN e MAX, l'uso delle parole chiave DISTINCT e ALL è privo di significato. Oltre ai campi numerici, i campi carattere possono essere utilizzati con le funzioni COUNT, MAX e MIN. Se l'argomento della funzione di aggregazione non contiene valori, la funzione COUNT restituisce 0 e tutte le altre restituiscono NULL.

SELEZIONA MAX (OrdDate)

A PARTIRE DAL

DOVE OrdDate "1.09.2010"

incarico per lavoro indipendente: Stato attivo linguaggio SQL query per recuperare i seguenti dati:

  • Il costo totale di tutti gli ordini;
  • Il numero di città distinte contenute nella tabella Cliente.

Per riassumere le informazioni contenute nel database, SQL fornisce funzioni aggregate. Una funzione di aggregazione accetta un'intera colonna di dati come argomento e restituisce un singolo valore che riepiloga quella colonna in un modo specifico.

Ad esempio, la funzione di aggregazione AVG() prende come argomento una colonna di numeri e ne calcola la media.

Per calcolare il reddito medio pro capite di un residente di Zelenograd, è necessaria la seguente query:

SELEZIONARE 'REDDITO MEDIO =', AVG (SUMD)

SQL ha sei funzioni aggregate che ti permettono di ottenere diversi tipi informazioni di sintesi (Fig. 1):

- SUM() calcola la somma di tutti i valori contenuti nella colonna;

- AVG() calcola la media tra i valori contenuti nella colonna;

- MIN() trova il più piccolo tra tutti i valori contenuti nella colonna;

- MAX() trova il più grande tra tutti i valori contenuti nella colonna;

- COUNT() conta il numero di valori contenuti nella colonna;

- COUNT (*) conta il numero di righe nella tabella dei risultati della query.

L'argomento di una funzione aggregata può essere un semplice nome di colonna, come nell'esempio precedente, o un'espressione, come nella query seguente che calcola l'imposta pro capite:

SELEZIONA MEDIA (SOMMA * 0,13)

Questa query crea una colonna temporanea contenente i valori (SUMD * 0,13) per ogni riga nella tabella PERSON, quindi calcola la media della colonna temporanea.

La somma del reddito di tutti i residenti di Zelenograd può essere calcolata utilizzando la funzione di aggregazione SOMMA:

SELEZIONA SOMMA (SOMMA) DA PERSONA

La funzione di aggregazione può essere utilizzata anche per calcolare i totali per una tabella di risultati ottenuti unendo più tabelle di origine. Ad esempio, puoi calcolare importo totale reddito percepito dai residenti da una fonte denominata "borsa di studio":

SELEZIONA SOMMA (DENARO)

DAL PROFITTO, HAVE_D

DOVE PROFIT.ID = HAVE_D.ID

AND PROFIT.SOURCE = 'Borsa di studio'

Le funzioni aggregate MIN() e MAX() consentono di trovare, rispettivamente, i valori più piccoli e più grandi nella tabella. Tuttavia, la colonna può contenere valori numerici o stringa oppure valori di data o ora.

Ad esempio, puoi definire:

(a) il reddito totale più basso guadagnato dai residenti e l'imposta più alta da pagare:

SELEZIONA MIN (SUMD), MAX (SUMD * 0,13)

(b) date di nascita del residente più anziano e più giovane:

SELEZIONA MIN (RDATE), MAX (RDATE)

(c) cognomi, nomi e patronimici dei primissimi e degli ultimissimi abitanti dell'elenco, in ordine alfabetico:

SELEZIONA MIN (FIO), MAX (FIO)

Quando si applicano queste funzioni aggregate, è necessario ricordare che i dati numerici vengono confrontati secondo regole aritmetiche, le date vengono confrontate in sequenza (i valori delle date precedenti sono considerati inferiori a quelli successivi), gli intervalli di tempo vengono confrontati in base alla loro durata.

Usando funzioni MIN() e MAX() con dati stringa, il risultato del confronto di due stringhe dipende dalla tabella di codifica dei caratteri utilizzata.

La funzione aggregata COUNT() conta il numero di valori in una colonna di qualsiasi tipo:

(a) quanti appartamenti ci sono nel 1° microdistretto?

SELEZIONA CONTEGGIO (ADR) DA APPARTAMENTO DOVE ADR LIKE "%, 1_ _-%"

(b) quanti residenti hanno fonti di reddito?

SELEZIONA COUNT (DISTINTO NOM) DA HAVE_D

(c) quante fonti di reddito sono utilizzate dai residenti?

SELECT COUNT (DISTINCT ID) FROM HAVE_D (La parola chiave DISTINCT specifica che vengono conteggiati i valori non duplicati nella colonna).

La funzione di aggregazione speciale COUNT (*) conta le righe nella tabella dei risultati, non i valori dei dati:

(a) quanti appartamenti ci sono nel 2° microdistretto?

SELEZIONA CONTEGGIO (*) DA APPARTAMENTO DOVE ADR COME "%, 2 __-%"

(b) quante fonti di reddito ha Ivan Ivanovich?

SELEZIONA COUNT (*) FROM PERSON, HAVE_D WHERE FIO = "Ivanov Ivan Ivanovich" AND PERSON.NOM = HAVE_D.NOM

(c) quanti residenti vivono in un appartamento a un determinato indirizzo?

SELEZIONA CONTEGGIO (*) DA PERSONA DOVE ADR = "Zelenograd, 1001-45"

Un modo per capire come vengono eseguite le query aggregate è pensare all'esecuzione della query in due parti. Innanzitutto, viene determinato come funzionerebbe la query senza funzioni aggregate, restituendo più righe di risultati. Le funzioni aggregate vengono quindi applicate ai risultati della query, restituendo una singola riga di riepilogo.

Ad esempio, si consideri la seguente query complessa: trovare il reddito totale medio pro capite, la somma del reddito totale dei residenti e il reddito medio della fonte come percentuale del reddito totale dell'abitante. La risposta è data dall'operatore

SELECT AVG (SUMD), SUM (SUMD), (100 * AVG (MONEY / SUMD)) FROM PERSON, PROFIT, HAVE_D DOVE PERSON.NOM = HAVE_D.NOM AND HAVE_D.ID = PROFIT.ID

Senza funzioni aggregate, la query sarebbe simile a questa:

SELEZIONA SUMD, SUMD, MONEY / SUMD FROM PERSON, PROFIT, HAVE_D WHERE PERSON.NOM = HAVE_D.NOM E HAVE_D.ID = PROFIT.ID

e restituirebbe una riga di risultati per ogni residente e specifica fonte di reddito. Le funzioni di aggregazione utilizzano le colonne nella tabella dei risultati di questa query per produrre una tabella a riga singola con i risultati di riepilogo.

Nella riga delle colonne restituite, puoi specificare una funzione di aggregazione invece di qualsiasi nome di colonna. Ad esempio, può essere incluso in un'espressione che aggiunge o sottrae i valori di due funzioni aggregate:

SELEZIONA MAX (SUMD) -MIN (SUMD) DA PERSON

Tuttavia, una funzione aggregata non può essere un argomento per un'altra funzione aggregata, ad es. le funzioni aggregate nidificate sono vietate.

Inoltre, le funzioni aggregate e i nomi di colonne regolari non possono essere utilizzati contemporaneamente nell'elenco delle colonne restituite, poiché non ha senso in questo, ad esempio:

SELEZIONA FIO, SOMMA (SUMD) DA PERSON

Qui, il primo elemento dell'elenco indica al DBMS di creare una tabella che sarà composta da più righe e conterrà una riga per ogni residente. Il secondo elemento nell'elenco chiede al DBMS di ottenere un valore di risultato, che è la somma dei valori nella colonna SUMD. Queste due linee guida si contraddicono, risultando in un errore.

Quanto sopra non si applica ai casi di elaborazione di sottoquery e query con raggruppamento.

dal valore della colonna Disciplina. Otterremo 4 gruppi per i quali possiamo calcolare alcuni valori di gruppo, ad esempio il numero di tuple in un gruppo, il valore massimo o minimo della colonna Punteggio. Tabella 5.7. Funzioni aggregate
Funzione Risultato
CONTARE Il numero di righe o valori di campo non vuoto selezionati dalla query
SOMMA La somma di tutti i valori selezionati per questo campo
AVG La media aritmetica di tutti i valori selezionati in questo campo
MIN Il più piccolo di tutti i valori selezionati per questo campo
MAX Il più grande di tutti i valori selezionati per questo campo
R1
Nome e cognome Disciplina Grado
Gruppo 1 Petrov F.I. Banca dati 5
K. A. Sidorov Banca dati 4
Mironov A.V. Banca dati 2
Stepanova K.E. Banca dati 2
Krylova T.S. Banca dati 5
Vladimirov V.A. Banca dati 5
Gruppo 2 K. A. Sidorov Teoria dell'informazione 4
Stepanova K.E. Teoria dell'informazione 2
Krylova T.S. Teoria dell'informazione 5
Mironov A.V. Teoria dell'informazione Nullo
Gruppo 3 Trofimov P.A. Reti e telecomunicazioni 4
Ivanova E.A. Reti e telecomunicazioni 5
N. V. Utkina Reti e telecomunicazioni 5
Gruppo 4 Vladimirov V.A. lingua inglese 4
Trofimov P.A. lingua inglese 5
Ivanova E.A. lingua inglese 3
Petrov F.I. lingua inglese 5

Funzioni aggregate sono usati come i nomi dei campi nell'istruzione SELECT, con un'eccezione: prendono il nome del campo come argomento. È possibile utilizzare solo SUM e AVG con campi numerici... Sia i campi numerici che quelli di caratteri possono essere utilizzati con le funzioni COUNT, MAX e MIN. Se utilizzati con i campi di caratteri, MAX e MIN li tradurranno nell'equivalente ASCII e li elaboreranno in ordine alfabetico... Alcuni DBMS consentono l'utilizzo di aggregati nidificati, ma questa è una deviazione dallo standard ANSI con tutte le conseguenze che ne conseguono.

Ad esempio, puoi calcolare il numero di studenti che hanno superato gli esami in ciascuna disciplina. Per fare ciò, è necessario eseguire una query raggruppata per il campo "Disciplina" e visualizzare come risultato il nome della disciplina e il numero di righe nel gruppo per questa disciplina. L'utilizzo del carattere * come argomento della funzione COUNT significa che vengono contate tutte le righe del gruppo.

SELEZIONA R1 Disciplina, COUNT (*) FROM R1 GROUP BY R1 Discipline

Risultato:

Se vogliamo contare il numero di coloro che hanno superato l'esame in qualsiasi disciplina, allora dobbiamo escludere i valori non definiti dal rapporto iniziale prima del raggruppamento. In questo caso, la richiesta sarà simile a questa:

Otteniamo il risultato:

In questo caso, la linea con lo studente

Mironov A.V. Teoria dell'informazione Nullo

non rientrerà nell'insieme di tuple prima del raggruppamento, quindi il numero di tuple nel gruppo per la disciplina " Teoria dell'informazione"sarà 1 in meno.

Può essere applicato funzioni aggregate anche senza l'operazione di raggruppamento preliminare, in questo caso l'intera relazione è considerata come un gruppo e per questo gruppo si può calcolare un valore per gruppo.

Facendo nuovamente riferimento al database della Sessione (tabelle R1, R2, R3), troveremo il numero di esami superati con successo:

Questo è, ovviamente, diverso dalla selezione di un campo, poiché viene sempre restituito un singolo valore, indipendentemente dal numero di righe della tabella. L'argomento funzioni aggregate ci possono essere colonne separate di tabelle. Ma per calcolare, ad esempio, il numero significati diversi qualche colonna nel gruppo, devi fare domanda parola chiave DISTINCT insieme al nome della colonna. Calcoliamo il numero di voti diversi ricevuti per ogni disciplina:

Risultato:

Il risultato può includere il valore del campo di raggruppamento e diversi funzioni aggregate e più campi possono essere utilizzati nelle condizioni di raggruppamento. In questo caso, i gruppi sono formati da un insieme di campi di raggruppamento specificati. Le operazioni aggregate possono essere applicate alla concatenazione di più tabelle di origine. Ad esempio, poniamo la domanda: determina per ogni gruppo e per ogni disciplina il numero di coloro che hanno superato con successo l'esame e il punteggio medio per la disciplina.

Risultato:

Non possiamo usare funzioni aggregate nella clausola WHERE perché i predicati vengono valutati in termini di una singola riga e funzioni aggregate- in termini di gruppi di linee.

La clausola GROUP BY consente di definire un sottoinsieme dei valori in un determinato campo in termini di un altro campo e applicare una funzione di aggregazione al sottoinsieme. Ciò rende possibile combinare campi e funzioni aggregate in una singola clausola SELECT. Funzioni aggregate può essere utilizzato sia nell'espressione dell'output dei risultati SELEZIONA righe, e nell'espressione della condizione di elaborazione dei gruppi formati HAVING. In questo caso, ogni funzione aggregata viene calcolata per ogni gruppo selezionato. Valori calcolati funzioni aggregate, può essere utilizzato per visualizzare risultati rilevanti o per condizioni di selezione del gruppo.

Costruiamo una query che visualizzi i gruppi in cui è stato ottenuto più di un deuce in una disciplina negli esami:

Nel seguito, a titolo di esempio, lavoreremo non con il database "Sessione", ma con il database "Banca", che consiste in un'unica tabella F, che memorizza la relazione F contenente le informazioni sui conti nelle filiali di un determinato Banca:

F = (N, nome completo, Filiale, Data di apertura, Data di chiusura, Saldo); Q = (Filiale, Città);

perché su questa base puoi illustrare meglio il lavoro con funzioni di aggregazione e raggruppamento.

Ad esempio, supponiamo di voler trovare il saldo totale del conto nelle filiali. È possibile effettuare una query separata per ciascuna di esse selezionando SUM (Restante) dalla tabella per ogni ramo. GROUP BY, invece, ti permetterà di inserirli tutti in un unico comando:

SELEZIONA Ramo, SOMMA (Saldo) DA F GRUPPO PER Ramo;

Si applica GROUP BY funzioni aggregate indipendentemente per ogni gruppo, identificato dal valore del campo Ramo. Il gruppo è composto da linee con lo stesso valore Campi ramificati, e

Clausola GROUP BY(istruzione SELECT) consente di raggruppare i dati (righe) in base al valore di una colonna o più colonne o espressioni. Il risultato sarà un insieme di righe di riepilogo.

Ogni colonna nell'elenco di selezione deve essere presente nella clausola GROUP BY, le uniche eccezioni sono le costanti e le colonne - operandi di funzioni aggregate.

Una tabella può essere raggruppata in base a qualsiasi combinazione delle sue colonne.

Funzioni aggregate vengono utilizzati per ottenere un singolo valore totale da un gruppo di righe. Tutte le funzioni aggregate eseguono calcoli su un singolo argomento, che può essere una colonna o un'espressione. Qualsiasi funzione aggregata restituisce un valore costante che viene visualizzato in una colonna separata nel risultato.

Le funzioni aggregate sono specificate nell'elenco di colonne di un'istruzione SELECT, che può anche contenere una clausola GROUP BY. Se l'istruzione SELECT non ha una clausola GROUP BY e l'elenco delle colonne select contiene, by almeno, una funzione aggregata, non dovrebbe contenere colonne semplici. D'altra parte, un elenco selezionato di colonne può contenere nomi di colonne che non sono argomenti per la funzione di aggregazione se tali colonne vengono utilizzate come argomenti per la clausola GROUP BY.

Se la query contiene una clausola WHERE, le funzioni aggregate calcolano un valore per i risultati della selezione.

Funzioni aggregate MIN e MAX calcolare il più piccolo e maggior valore colonna rispettivamente. Gli argomenti possono essere numeri, stringhe e date. Qualunque cosa valori nulli rimosso prima del calcolo (cioè non preso in considerazione).

Funzione di aggregazione SOMMA calcola la somma totale dei valori della colonna. Solo i numeri possono essere argomenti. L'utilizzo del parametro DISTINCT rimuove eventuali valori duplicati nella colonna prima di applicare la funzione SUM. Allo stesso modo, rimuovere tutti i valori NULL prima di applicare questa funzione di aggregazione.

Funzione di aggregazione AVG restituisce la media di tutti i valori in una colonna. Gli argomenti possono anche essere solo numeri e tutti i valori NULL vengono rimossi prima della valutazione.

Funzione di aggregazione COUNT ha due diverse forme:

  • COUNT (col_name) - conta il numero di valori nella colonna col_name, i valori NULL non vengono conteggiati
  • COUNT (*) - conta il numero di righe nella tabella, vengono presi in considerazione anche i valori NULL

Se la query utilizza la parola chiave DISTINCT, tutti i valori di colonna duplicati vengono rimossi prima che venga utilizzata la funzione COUNT.

COUNT_BIG funzione stessa funzione di COUNT. L'unica differenza tra i due è nel tipo di risultato che restituiscono: COUNT_BIG restituisce sempre valori BIGINT, mentre COUNT restituisce valori di dati INTEGER.

V AVERE un'offerta definisce una condizione che viene applicata a un gruppo di righe. Ha lo stesso significato per i gruppi di righe della clausola WHERE per il contenuto della tabella corrispondente (WHERE si applica prima del raggruppamento, HAVING dopo).

Impareremo a riassumere. No, questi non sono ancora i risultati dello studio di SQL, ma i risultati dei valori delle colonne delle tabelle del database. Le funzioni aggregate SQL agiscono sui valori delle colonne per produrre un singolo valore di risultato. Le funzioni di aggregazione SQL più comunemente utilizzate sono SUM, MIN, MAX, AVG e COUNT. È necessario distinguere tra due casi di utilizzo di funzioni aggregate. Innanzitutto, le funzioni aggregate vengono utilizzate da sole e restituiscono un singolo valore risultante. In secondo luogo, le funzioni aggregate vengono utilizzate con la clausola SQL GROUP BY, ovvero con il raggruppamento per campi (colonne) per ottenere i valori dei risultati in ciascun gruppo. Consideriamo prima i casi di utilizzo di funzioni aggregate senza raggruppamento.

Funzione SOMMA SQL

La funzione SQL SUM restituisce la somma dei valori di una colonna in una tabella di database. Può essere applicato solo alle colonne i cui valori sono numeri. Query SQL per ottenere l'importo risultante, inizia in questo modo:

SELEZIONA SOMMA (COLUMN_NAME) ...

Questa espressione è seguita da FROM (TABLE_NAME), quindi è possibile specificare una condizione utilizzando la clausola WHERE. Inoltre, DISTINCT può essere specificato davanti al nome della colonna, il che significa che solo valori unici... Per impostazione predefinita, vengono presi in considerazione tutti i valori (per questo, è possibile specificare specificamente non DISTINCT, ma ALL, ma la parola ALL è facoltativa).

Esempio 1. C'è un database dell'azienda con i dati sulle sue divisioni e dipendenti. La tabella Personale, oltre a tutto, ha una colonna con i dati sugli stipendi dei dipendenti. La selezione dalla tabella è la seguente (per ingrandire l'immagine cliccarci sopra con il tasto sinistro del mouse):

Per ottenere la somma di tutti gli stipendi, utilizziamo la seguente query:

SELEZIONA SOMMA (stipendio) DA Personale

Questa query restituirà 287664.63.

E adesso . Negli esercizi, stiamo già iniziando a complicare i compiti, avvicinandoli a quelli che si incontrano nella pratica.

Funzione SQL MIN

La funzione SQL MIN funziona anche su colonne i cui valori sono numeri e restituisce il minimo di tutti i valori nella colonna. Questa funzione ha la stessa sintassi della funzione SOMMA.

Esempio 3. Il database e la tabella sono gli stessi dell'esempio 1.

Vuoi sapere il minimo salari dipendenti del dipartimento numero 42. Per fare ciò, scrivi la seguente richiesta:

La richiesta restituirà il valore 10505.90.

E di nuovo esercizio per decisione indipendente ... In questo e in altri esercizi, avrai bisogno non solo della tabella Staff, ma anche della tabella Org, che contiene i dati sulle divisioni dell'azienda:


Esempio 4. La tabella Org viene aggiunta alla tabella Staff, che contiene i dati sulle divisioni dell'azienda. Visualizza il numero minimo di anni in cui un singolo dipendente ha lavorato in un dipartimento situato a Boston.

Funzione SQL MAX

La funzione SQL MAX funziona in modo simile e ha una sintassi simile, che viene utilizzata quando è necessario definire valore massimo tra tutti i valori di colonna.

Esempio 5.

È necessario scoprire lo stipendio massimo dei dipendenti del dipartimento numero 42. Per fare ciò, scrivi la seguente richiesta:

La richiesta restituirà il valore 18352.80

È tempo esercizi per l'autosoluzione.

Esempio 6. Stiamo lavorando di nuovo con due tabelle: Staff e Org. Stampa il nome del reparto e le provvigioni massime guadagnate da un dipendente in un reparto appartenente alla Divisione Orientale. Uso UNISCITI (unisci tabelle) .

Funzione SQL AVG

La sintassi precedente per le funzioni descritte in precedenza è vera anche per la funzione SQL AVG. Questa funzione restituisce la media di tutti i valori in una colonna.

Esempio 7. Il database e la tabella sono gli stessi degli esempi precedenti.

Supponiamo di voler scoprire l'esperienza lavorativa media dei dipendenti del dipartimento numero 42. Per fare ciò, scrivi la seguente query:

Il risultato sarà un valore di 6.33

Esempio 8. Lavoriamo con un tavolo - Staff. Ritirare stipendio medio dipendenti con esperienza da 4 a 6 anni.

Funzione SQL COUNT

La funzione SQL COUNT restituisce il numero di record in una tabella di database. Se specifichi SELECT COUNT (COLUMN_NAME) ... nella query, il risultato sarà il numero di record esclusi i record in cui il valore della colonna è NULL (non definito). Se usi un asterisco come argomento e inizia SELECT query COUNT (*) ..., quindi il risultato sarà il numero di tutti i record (righe) della tabella.

Esempio 9. Il database e la tabella sono gli stessi degli esempi precedenti.

È necessario conoscere il numero di tutti i dipendenti che ricevono commissioni. Il numero di dipendenti i cui valori della colonna Comm non sono NULL restituirà la seguente query:

SELEZIONA COUNT (Comm) DA Staff

Il risultato è 11.

Esempio 10. Il database e la tabella sono gli stessi degli esempi precedenti.

Se hai bisogno di scoprire il numero totale di record in una tabella, usiamo una query con un asterisco come argomento della funzione COUNT:

SELEZIONA COUNT (*) FROM Staff

Il risultato è 17.

Nel prossimo esercizio di auto-aiuto dovrai usare una sottoquery.

Esempio 11. Lavoriamo con un tavolo - Staff. Visualizzare il numero di dipendenti nel reparto di pianificazione (pianure).

Funzioni di aggregazione con SQL GROUP BY (raggruppamento)

Ora diamo un'occhiata all'utilizzo delle funzioni aggregate in combinazione con la clausola SQL GROUP BY. La clausola SQL GROUP BY viene utilizzata per raggruppare i valori dei risultati in base alle colonne della tabella del database.

Esempio 12. C'è un database del portale di annunci. Contiene la tabella Annunci, che contiene i dati sugli annunci inviati per la settimana. La colonna Categoria contiene informazioni su grandi categorie annunci pubblicitari (ad esempio, Immobili) e la colonna Parti - sulle parti più piccole incluse nelle categorie (ad esempio, le parti Appartamenti e Cottage fanno parte della categoria Immobili). La colonna Unità contiene i dati sul numero di annunci inviati e la colonna Denaro contiene l'importo ricevuto per l'invio degli annunci.

CategoriaParteUnitàI soldi
TrasportoVeicoli a motore110 17600
La proprietàAppartamenti89 18690
La proprietàCottage57 11970
TrasportoMotociclette131 20960
Materiali da costruzionetavole68 7140
Ingegnere elettricotelevisori127 8255
Ingegnere elettricoFrigoriferi137 8905
Materiali da costruzioneRegips112 11760
Tempo liberolibri96 6240
La proprietàcase47 9870
Tempo liberoMusica117 7605
Tempo liberoGiochi41 2665

Utilizzando l'istruzione SQL GROUP BY, trova la quantità di denaro guadagnata dalla pubblicazione di annunci in ciascuna categoria. Scriviamo la seguente richiesta.

Principali articoli correlati