Basi di Dati: Corso di laboratorio

Похожие документы
Basi di Dati: Corso di laboratorio

Il linguaggio SQL: raggruppamenti. Versione elettronica: SQLb-gruppi.pdf

Basi di Dati: Corso di laboratorio

Basi di Dati: Corso di laboratorio

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Linguaggio SQL seconda parte

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Esempi SQL con Access. Orazio Battaglia

<Nome Tabella>.<attributo>

Structured. Language. Basi di Dati. Introduzione. DDL: Data Definition Language. Tipi di dato. Query. Modifica dei Dati

Esempio di database relazionale con l utilizzo del prodotto MySQL

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

SQL [2] Concetti avanzati di SQL. Esempi di interrogazioni

Caratteristiche dei linguaggi per Database

Elena Baralis 2007 Politecnico di Torino 1

SQL - Funzioni di gruppo

Basi di Dati: Corso di laboratorio

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

SELECT FROM ORDER BY SELECT FROM ORDER BY DESC DESC SELECT FROM ORDER BY DESC DESC SELECT FROM WHERE SELECT FROM WHERE AND SELECT FROM WHERE AND

SQL - Structured Query Language

SELECT s.nome, e.data Studenti s, Esami e WHERE e.materia = 'BD' AND e.voto = 30 AND e.matricola = s.matricola

Interrogazioni nidificate

Alessandra Raffaetà. Esercizio: Cinema

Corso di Laboratorio di Basi di Dati

Basi di Dati. Esercitazione 2: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

Interrogare una base di dati: Algebra relazionale e SQL. Alessandro Bardine Alessandro Ciaramella Vincenzo Galella Rudy Manganelli

Linguaggio SQL. studenti matricola nome cognome citta anno 11 marco bini bologna laura sicuro rimini 1984 esami codice

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Istruzioni DML di SQL

ESERCITAZIONE 4 Giovedì 13 novembre 2014 (3 ore) SQL

SQL (STRUCTURED QUERY LANGUAGE)

Algebra relazionale: operazioni

Informatica per le Scienze Umane. Introduzione al corso: programma dettagliato

Data management a.a Il linguaggio SQL

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Basi di dati I Prova di autovalutazione 30 ottobre 2014

ESERCIZIO 1 (12 punti) Dato il seguente schema relazionale, che modella i dati di società di assicurazioni che erogano polizze sanitarie.

DATABASE CLIENTIRAPPRESENTANTI

Interrogazioni complesse. SQL avanzato 1

BASI DATI: algebra relazionale

Interrogazioni nidificate

CONCETTO DI ANNIDAMENTO

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

DATABASE PER IL WEB. Programmazione Web 1

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

Basi di Dati Corso di Laura in Informatica Umanistica

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Tipi di sottoquery SQL

Basi di Dati. S Q L Lezione 4

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Basi di Dati Corso di Laura in Informatica Umanistica

Compito Basi di Dati. Tempo concesso: 2 ore 18 Febbraio 2013 Nome: Cognome: Matricola:

a.a. 2012/13 12 Novembre 2012 Preparazione al Test in itinere, Compito A 1. Modellare tramite uno schema entità- relazione la seguente base di dati:

Concettuale. Giuseppe Amato

MAX, SUM, AVG, COUNT)

Basi di Dati. S Q L Lezione 5

SISTEMI OPERATIVI, RETI, INTERNET

SQL e algebra relazionale

Basi di Dati. Esercitazione SQL. Paolo Papotti. 19 maggio 2005

DBMS (Data Base Management System)

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

UTENTE (Codice, Nome, Cognome, Indirizzo, Telefono) PRESTITO (Collocazione, CodUtente, DataPrestito, DataRest)

Basi di dati I 19 settembre 2016 Tempo a disposizione: un ora e 45 minuti.

Microsoft Access (parte 5) Query. Query. Query. Query. Creare una query

Esercitazione: Interrogazioni SQL

SQL - Sottointerrogazioni

SQL IL LINGUAGGIO DI INTERROGAZIONE

Basi di Dati. Esercitazione 3: Interrogazioni in SQL. K. Donno - Interrogazioni in SQL

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

MODULO 5 DATA BASE PROGRAMMA. Progettazione rapida introduzione alla progettazione di DB

RELAZIONE FINALE DEL DOCENTE

Esame Informatica Generale 13/04/2016 Tema A

Il linguaggio SQL. ing. Alfredo Cozzi 1

Esercitazione su SQL

Istruzioni SQL 1. Query di selezione 2 Istruzione SELECT 2 Istruzione SELECT DISTINCT 2 ORDER BY 3 WHERE 3 La condizione LIKE 4 BETWEEN AND 5

********************* MODIFICA STRUTTURA DI UNA TABELLA (inserimento di un nuovo campo) ALTER TABLE Personale ADD Nascita date;

Utilizzando Microsoft Access. Si crea la tabella Anagrafica degli alunni,le Materie e i voti si mettono alcuni campi

Транскрипт:

Basi di Dati: Corso di laboratorio Lezione 5 Raffaella Gentilini 1 / 22

Sommario 1 Gruppi 2 / 22

Raggruppamenti Gruppi Quanto sinora visto permette di estrarre dal DB informazioni che si riferiscono a singole tuple (eventualmente ottenute mediante operazioni di join) Esempio: Il titolare del corso di logica. Vedremo ora come ottenere dal DB informazioni di sintesi che caratterizzano gruppi di tuple mediante le funzioni d aggregazione e le clausole GROUP BY e HAVING del comando SELECT di SQL Esempio: Il numero di insegnanti che tengono almeno un corso. 3 / 22

Gruppi Lo standard SQL mette a disposizione una serie di funzioni d aggregazione (o di colonna ) MAX: massimo MIN: minimo SUM: somma AVG: media aritmetica COUNT: contatore 4 / 22

Gruppi L argomento di una funzione d aggregazione e una qualunque espressione della SELECT list SELECT MAX(data nascita) FROM persona; SELECT MIN(voto + 2) FROM frequenza; E possibile utilizzare l opzione DISTINCT, per considerare soltanto i valori distinti SELECT SUM (DISTINCT voto) FROM frequenza; 5 / 22

Funzioni D aggregazione e Valori Nulli Tutte le funzioni, ad eccezione di COUNT, ignorano i valori nulli Per quanto riguarda la funzione d aggregazione COUNT: La forma COUNT( ) conta le tuple del risultato, considerando anche i valori nulli. Specificando invece il nome di una colonna (ad esempio, COUNT(id corso)), i valori nulli vengono ignorati. 6 / 22

Esempio Gruppi Example id corso id insegnante titolo retribuzione 1 3 Circuiti 100 2 3 Programmazione 3 2 Algoritmi 300 10 1 Logica 300 SELECT COUNT( ) AS r3 FROM corso WHERE id insegnante = 3; r3 2 SELECT COUNT(retribuzione) AS r 3 FROM corso WHERE id insegnante = 3; r3 1 7 / 22

Clausola Select e Funzioni Aggregate La SELECT list deve essere omogenea! Example SELECT crediti, MAX(crediti) FROM corso 8 / 22

Clausola Select e Funzioni Aggregate La SELECT list deve essere omogenea! Example SELECT crediti, MAX(crediti) FROM corso wrong! 9 / 22

Clausola Select e Funzioni Aggregate La SELECT list deve essere omogenea! Example SELECT crediti, MAX(crediti) FROM corso wrong! SELECT MIN(crediti), MAX(crediti) FROM corso 10 / 22

I valori di sintesi calclati dalle funzioni aggregate si riferiscono a tutte le tuple che soddisfano le condizioni della clausola WHERE In molti casi e utile fornire tali valori per gruppi omogenei di tuple (e.g. gruppo degli studenti di un certo corso) la clausola GROUP BY permette di definire tali gruppi, specificando una o piu colonne di raggruppamento sulla base della/e quale/i le tuple sono raggruppate per valori uguali 11 / 22

GROUP BY Gruppi La clausola GROUP BY id studente id corso voto 1 3 30 2 3 25 1 1 20 10 1 23 7 1 14 SELECT id corso, COUNT( ) AS NumStudenti FROM frequenza WHERE voto >= 18 GROUP BY id corso id corso NumStudenti 3 2 1 2 12 / 22

GROUP BY step by step SELECT id corso, COUNT( ) AS NumStudenti FROM frequenza WHERE voto >= 18 GROUP BY id corso id studente id corso voto Le tuple che soddisfano la clausola WHERE 1 3 30 2 3 25 1 1 20 10 1 23 7 1 14 13 / 22

GROUP BY step by step SELECT id corso, COUNT( ) AS NumStudenti FROM frequenza WHERE voto >= 18 GROUP BY id corso id studente id corso voto sono raggruppate per valori uguali della/e colonna/e nella clausola GROUP BY 1 3 30 2 3 25 1 1 20 10 1 23 14 / 22

GROUP BY step by step SELECT id corso, COUNT( ) AS NumStudenti FROM frequenza WHERE voto >= 18 GROUP BY id corso e infine a ciascun gruppo si applica la funzione aggregata id corso NumStudenti 3 2 1 2 15 / 22

Condizioni sui Gruppi Example Oltre a poter formare dei gruppi, e anche possibile selezionare dei gruppi sulla base di loro proprieta complessive La clausola HAVING ha per i gruppi una funzione simile a quella che la clausola WHERE ha per le tuple Selezionare per ogni corso superato da almeno 10 studenti, il numero di studenti promossi. SELECT id corso, COUNT( ) FROM frequenza WHERE voto >= 18 GROUP BY id corso HAVING COUNT( )>= 10 16 / 22

Raggruppamenti: Esempi persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto): dove id studente ed id corso sono chiavi esterne su persona e corso Example Definire il numero dei corsi impartiti da ogni docente SELECT id insegnante,cognome, nome, COUNT( ) FROM corso JOIN persona ON id insegnante = id persona GROUP BY id insegnante, cognome, nome; 17 / 22

Raggruppamenti: Esempi persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto): dove id studente ed id corso sono chiavi esterne su persona e corso Example Definire il numero dei corsi di informatica impartiti dai docenti che insegnano in almeno due corsi di informatica: SELECT id insegnante,cognome, nome, COUNT( ) FROM corso JOIN persona ON id insegnante = id persona WHERE sigla LIKE INF% GROUP BY id insegnante, cognome, nome HAVING COUNT( )>= 2; 18 / 22

Raggruppamenti: Esempi persona(id persona, codice fiscale, nome, cognome, data nascita) corso(id corso, id insegnante, sigla, crediti, descrizione) frequenza(id studente,id corso,voto): dove id studente ed id corso sono chiavi esterne su persona e corso Example Definire il numero dei corsi di informatica impartiti dai docenti che insegnano in almeno due corsi di informatica, dei quali uno garantisca piu di 4 crediti: SELECT id insegnante,cognome, nome, COUNT( ) FROM corso JOIN persona ON id insegnante = id persona WHERE sigla LIKE INF% GROUP BY id insegnante, cognome, nome HAVING COUNT( )>= 2 AND MAX(crediti) > 4 ; 19 / 22

Sommario Gruppi: Sintassi La sintassi di una query che utilizza i costrutti di raggrupamento (funzioni di aggregazione, clausole GROUP BY e HAVING) e data da: SELECT <espressione 1 > [,... ], <espressione n > [, <funzione aggreg> [,... ]] FROM <tabella> [[AS <alias>]] [,... ] [ WHERE <predicato> ] [ GROUP BY <espressione 1 > [,... ], <espressione n > ] [ HAVING <predicato> ] 20 / 22

Sommario della Seconda Parte (III) : Sintassi AVG ( [DISTINCT ALL] <espressione>) COUNT ( { [DISTINCT ALL] <espressione>}}) MAX ( [DISTINCT ALL] <espressione>) MIN ( [DISTINCT ALL] <espressione>) SUM ( [DISTINCT ALL] <espressione>) 21 / 22

Bibliografia Gruppi Bibliografia ed Approfondimenti R.A.Elmasri, S.B. Navathe. Sistemi di Basi di Dati Fondamenti: Capitolo 8 Capitolo 6 (Data Manipulation) del manuale di PostgreSQL (http://www.postgresql.org/docs/manuals/) 22 / 22