Angiolina85’s Weblog

Just another WordPress.com weblog

Approfondimenti su SQL: clauslole Where, Having, Group By Dicembre 2, 2008

Archiviato in: Uncategorized — angiolina85 @ 11:39 am

Le clausole che Sql contempla sono:

  • Where
  • Group By
  •  Order By
  • Having

La clausola Where verifica che ci siano delle condizioni solo a livello di singole righe. Ecco un esempio, in cui dalla tabella che interroghiamo, poniamo la clausola Where ‘Importo<150000′; tale condizione è stata posta a tutte le righe per poi ottenere solo quelle che la soddisfano:

ASSEGNI

ASSEGNO
——————-

BENEFICIARIO
—————————————
IMPORTO
——————-
NOTE
—————————————
1 COMPUTER SHOP
50 000
DISCHETTI E CD-ROM
2 LIBRERIE CULTURA
245 000
LIBRI, CANCELLERIA
3 COMPUTER SHOP
200 000
TELEFONO CELLULARE
4 BIOGAS SRL
88 000
GAS
5 SUPERMARCHET GS
150 000
ALIMENTARI
16 ASSICURAZIONI ASSO
425 000
ASSICURAZIONE CASA
17 GAS S.P.A.
25 000
GAS
21 COMPUTER SHOP
34 000
CONTROLLER
20 ABITI BELLA
110 000
PANTALONI
9 ABITI BELLA
224 000
COMPLETO DONNA
8 COMPUTER SHOP
134 000
JOYSTICK

 

SELECT * FROM ASSEGNI
WHERE IMPORTO < 150000;

ASSEGNO
——————-

BENEFICIARIO
—————————————
IMPORTO
——————-
NOTE
—————————————
1 COMPUTER SHOP
50 000
DISCHETTI E CD-ROM
4 BIOGAS SRL
88 000
GAS
17 GAS S.P.A.
25 000
GAS
21 COMPUTER SHOP
34 000
CONTROLLER
20 ABITI BELLA
110 000
PANTALONI
8 COMPUTER SHOP
134 000
JOYSTICK

La clausola Group By consente di interrogare le colonne di una tabella per formare dei sottoinsiemi.

Ad esempio, se per ogni beneficiario vogliamo sapere quanto è stato elargito, abbiamo la segunete espressione:

SELECT BENEFICIARIO, SUM(IMPORTO)
FROM ASSEGNI
GROUP BY BENEFICIARIO;

Da cui otterremo questo risultato:

BENEFICIARIO
—————————————
SUM(IMPORTO)
—————————
ABITI BELLA
334 000
ASSICURAZIONI ASSO
425 000
BIOGAS SRL
88 000
COMPUTER SHOP
418 000
GAS S.P.A.
25 000
LIBRERIE CULTURA
245 000
SUPERMARCHET GS
150 000

 

La clausola Having viene utilizzata in sostituzione di Where quando nella condizione appaiono funzioni di gruppo o quando la condizione deve verificarsi per un sottoinsieme di righe.

SELECT DIVISIONE, AVG(STIPENDIO)
FROM DIPENDENTI
GROUP BY DIVISIONE
HAVING DIVISIONE = ‘VENDITE’;

DIVISIONE
——————————-
AVG(STIPENDIO)
—————————
VENDITE 2033333,3

Qui vediamo che la media degli stipendi è stata estrapolata dalla sola divisione vendite.

 

Leave a Reply