Esercizi SQL Group by
CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio REAL, livello INTEGER(1) );
Inseriamo i dati INSERT INTO dipendente VALUES (‘1’, ‘Neri’, ‘Enzo’, 1000, 5); INSERT INTO dipendente VALUES (‘2’, ‘Rossi’, ‘Carlo’, 1300, 6); INSERT INTO dipendente VALUES (‘3’, ‘Rossi’, ‘Enzo’, 1100, 5); INSERT INTO dipendente VALUES (‘4’, ‘Bianchi’, ‘Enzo’, 1900, 7); INSERT INTO dipendente VALUES (‘5’, ‘Neri’, ‘Anna’, 1800, 7); INSERT INTO dipendente VALUES (‘6’, ‘Esp’, ‘Ciro’, 1200, 5); INSERT INTO dipendente VALUES (‘7’, ‘Esp’, ‘Ugo’, 2100, 7); INSERT INTO dipendente VALUES (‘8’, ‘Scogn’, ‘Dario’, 2200, 7); INSERT INTO dipendente VALUES (‘9’, ‘Scogn’, ‘Bob’, 1500, 6); INSERT INTO dipendente VALUES (‘10’, ‘Russo’, ‘Aida’, 2000, 8);
COUNT(stipendio) 2 SELECT COUNT(stipendio) FROM dipendente WHERE stipendio > 2000; Visualizza: Numero dipendenti con stipendio>2000 euro
SELECT SUM(stipendio) AS 'Esborso totale x stipendi‘ FROM dipendente; Visualizza: Esborso totale per gli stipendi dei dipendenti Esborso totale x stipendi 16100
SELECT MAX(stipendio) AS ‘Valore massimo degli stipendi‘ FROM dipendente; Visualizza: Valore massimo degli stipendi dei dipendenti Valore massimo degli stipendi 2200
SELECT AVG(stipendio) AS ‘Valore medio degli stipendi‘ FROM dipendente; Visualizza: Valore medio degli stipendi dei dipendenti Valore medio degli stipendi 1610
SELECT * FROM dipendente ORDER BY Stipendio DESC; Visualizza: Valore stipendi dei dipendenti ordinati sullo stipendio
Raggruppamento: Group by Viene eseguito il prodotto delle tabelle presenti nella clausola FROM; Su tale prodotto si fa una restrizione (selezione) in base alla clausola WHERE (se presente); La tabella risultante viene logicamente partizionata in gruppi di righe. Due righe appartengono allo stesso gruppo se hanno gli stessi valori per gli attributi elencati nella clausola GROUP BY; Tutti i gruppi che non soddisfano la clausola HAVING vengono eliminati
Visualizza lo stipendio medio per livello SELECT livello, AVG(Stipendio) FROM dipendente GROUP BY livello; ivelloAVG(Stipendio)
Studente (idstudente, nome, cognome,..) Materia (idmateria, descrizione) Prova (idprova, idstudente, idmateria, voto) Select cognome, nome, avg(voto) From prova, studente Where prova.idstudente=studente.idstudente Group by idstudente, cognome, nome;