Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4

Documenti analoghi
Operatori aggregati: COUNT

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Join esplicito. SELECT con join esplicito, sintassi. Ulteriore estensione: join naturale (meno diffuso) Outer join. Join esterno: "outer join"

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL /10/2016 Basi di dati - SQL 1

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Gestione dei valori nulli

Corso sul linguaggio SQL

SQL. SQL: una visione panoramica. SQL: "storia" Definizione dei dati

Operatori aggregati. Gli operatori di aggregazione NON sono rappresentabili in Algebra Relazionale. conteggio, minimo, massimo, media, somma

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

SQL Esempi. 24/10-7/11/2016 Basi di dati - SQL 1

SQL Esempi /10/2017 Basi di dati - SQL 1

Interrogazioni su più tabelle. Interrogazioni su più tabelle. Clausola where. Interrogazioni su più tabelle

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

Figlio Maria. Luigi. Olga Filippo Andrea Aldo Figlio Franco Olga Filippo Andrea Aldo

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Trasparenze rielaborate da Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999 Capitolo 4: SQL-2, seconda parte.

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - Funzioni Aggregate e GROUP BY

Il linguaggio SQL - Interrogazioni -

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

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Basi di dati. SQL: concetti base

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

E. Giunchiglia Basi di dati 1 (trasparenze basate su Atzeni, Ceri, Paraboschi, Torlone: Basi di dati, Capitolo 4) SQL SQL. Definizione dei dati in SQL

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: "storia" Domini. CREATE TABLE, esempio

SQL. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: "storia" Domini

Elementi di Informatica LB Basi di Dati. Anno accademico 2007/2008 Prof. Stefano Contadini

Università di Roma La Sapienza Laurea in Ingegneria Informatica. Basi di Dati. Anno Accademico 2003/2004 Canale M-Z.

SQL Matteo Magnani, Danilo Montesi Università di Bologna SQL. SQL come Data Manipulation Language - (SELECT FROM WHERE ORDER BY)

SQL. Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL. Definizione dei dati in SQL. SQL: "storia" Domini

BASE DI DATI. Concetti trattati: Funzioni aggregate Raggruppamenti Nidificazione Viste. Informatica Umanistica Università di Pisa

SQL: "storia" 31/05/2006 2

Structured Query Language

SQL terza parte D O C E N T E P R O F. A L B E R T O B E L U S S I. Anno accademico 2010/11

Progettazione di Sistemi Informatici

IL LINGUAGGIO SQL LE BASI

Parte IV Il linguaggio SQL

SQL - Structured Query Language

Basi di dati. Giuseppe De Giacomo. Dipartimento di Informatica e Sistemistica Antonio Ruberti SAPIENZA Università di Roma

Esempi SQL con Access. Orazio Battaglia

Basi di dati Maurizio Lenzerini Dipartimento di Informatica e Sistemistica Antonio Ruberti Università di Roma La Sapienza

Linguaggio SQL seconda parte

Gestione di basi di dati relazionali con SQL (parte II) Valutazione delle condizioni su insiemi di tuple

Interrogazioni semplici

Laboratorio di. Docenti: Alberto Belussi e Carlo Combi

Idoneita Informatica. Sistemi per la gestione di basi di Dati

Basi di dati. SQL :Structured Query Language: SELECT (I) Prof.ssa Rosalba Giugno

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

Operatori aggregati. Un operatore aggregato è una funzione che si applica ad un insieme di tuple di una tabella

Basi di Dati. S Q L Lezione 4

Il linguaggio SQL: raggruppamenti

Esercitazione: Interrogazioni SQL

QL (Query Language) Alice Pavarani

Monday, January 24, 2011 SQL

Il linguaggio SQL: raggruppamenti

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Informatica CL Fisioterapisti. Informatica Medica Sistemi per la gestione di basi di Dati

Basi di Dati: Corso di laboratorio

SQL: RAGGRUPPAMENTI, QUANTIFICAZIONE, METODO. Patrizio Dazzi a.a

Esercitazione 3 SQL 2

Interrogazioni complesse. SQL avanzato 1

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

SQL - Funzioni di gruppo

Esercitazione 6 SQL 3

Corso sul linguaggio SQL

Il linguaggio SQL: raggruppamenti

Corso di Basi di Dati

Sistemi di Elaborazione delle Informazioni

Interrogazioni in SQL SQL. Interrogazioni in SQL. Sintassi. Significato dell interrogazione. Notazione

SQL. Sistemi informativi Modulo di Basi di dati. CREATE TABLE, esempio. Definizione dei dati in SQL. Domini. Domini elementari

Corso sul linguaggio SQL

SQL. Domini. Domini elementari (predefiniti) Domini definiti dall utente (semplici, ma riutilizzabili)

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

Linguaggio SQL: fondamenti D B M G

Lezioni di Laboratorio sui Data Base

SQL e algebra relazionale

Corso di Laurea in Ingegneria Informatica Fondamenti di Informatica II Modulo Basi di dati a.a

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

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

Esercizi di Informatica Documentale

3 SQL : Interrogazioni

SQL: le funzioni di aggregazione

Elena Baralis 2007 Politecnico di Torino 1

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

Corso di Basi di Dati A.A. 2013/2014

D B M G. Linguaggio SQL: fondamenti. Istruzione SELECT: fondamenti. Elena Baralis 2007 Politecnico di Torino 1. Struttura di base

Basi di dati I 19 luglio 2018 Esame Compito A Durata: un ora e trenta minuti.

Elena Baralis 2007 Politecnico di Torino 1

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, SQL

Transcript:

Operazioni sui dati Interrogazioni con operatori aggregati

Ordinamento del risultato Nome e reddito delle persone con meno di trenta anni in ordine alfabetico select nome, reddito from persone where eta < 30 order by nome

select nome, reddito from persone where eta < 30 Persone Nome Reddito Andrea 21 Aldo 15 Filippo 30 select nome, reddito from persone where eta < 30 order by nome (order by reddito) Persone Nome Reddito Aldo 15 Andrea 21 Filippo 30

Operatori aggregati Nelle espressioni della target list possiamo avere anche espressioni che calcolano valori a partire da insiemi di ennuple: conteggio, minimo, massimo, media, totale sintassi base (semplificata): Funzione ( [ DISTINCT ] * ) Funzione ( [ DISTINCT ] Attributo )

Operatori aggregati: COUNT Il numero di figli di Franco select count(*) as NumFigliDiFranco from Paternita where Padre = 'Franco' l operatore aggregato (count) viene applicato al risultato dell interrogazione: select * from Paternita where Padre = 'Franco'

Paternità Padre Sergio Luigi Luigi Franco Franco Figlio Franco Olga Filippo Andrea Aldo NumFigliDiFranco 2

COUNT e valori nulli I valori nulli non vengono contati select count(*) from persone select count(reddito) from persone select count(distinct reddito) from persone Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Reddito 21 NULL 21 35

Altri operatori aggregati SUM, AVG, MAX, MIN Media dei redditi dei figli di Franco select avg(reddito) from persone join paternita on nome=figlio where padre='franco'

Operatori aggregati e valori nulli select avg(reddito) as redditomedio from persone viene calcolato (30+36+36)/3; non viene considerato il valore NULL Persone Nome Età Andrea 27 Aldo 25 Maria 55 Anna 50 Reddito 30 NULL 36 36

Operatori aggregati e target list un interrogazione scorretta: Select nome, max(reddito) from persone di chi sarebbe il nome? (potrebbero esserci più persone con stesso nome e reddito massimo!) La target list deve essere omogenea: scorretta! select min(eta), avg(reddito) from persone corretta!

Operatori aggregati e raggruppamenti Gli opeatori aggregati possono essere applicati a partizioni delle relazioni La clausola GROUP BY, consente di partizionare le ennuple di una relazione; la sintassi: GROUP BY listaattributi

Operatori aggregati e raggruppamenti Il numero di figli di ciascun padre (con ordinamento) Select padre, count(distinct figlio) as NumeroFigli from paternita group by padre (order by padre) paternita Padre Sergio Luigi Luigi Franco Franco Figlio Franco Olga Filippo Andrea Aldo Padre NumFigli Sergio 1 Luigi 2 Franco 2

Semantica delle interrogazioni con operatori aggregati e raggruppamenti 1. interrogazione senza group by e senza operatori aggregati select * from paternita 2. si raggruppa (o partiziona la relazione) e poi si applica l operatore aggregato a ciascun gruppo

Raggruppamenti e target list Compara il reddito di ciascun padre con quello medio dei propri figli Query corretta: select padre, avg(f.reddito), p.reddito from (persone f join paternita on figlio = f.nome) join persone p on padre =p.nome group by padre oppure: select padre, avg(f.reddito), p.reddito from (persone f join paternita on figlio = f.nome join persone p on padre =p.nome group by padre, p.reddito

Condizioni (having) sui gruppi Seleziona i padri i cui figli hanno un reddito medio maggiore di 25 Query Corretta: Select padre, avg(f.reddito) From persone f join paternita on figlio = f.nome group by padre having avg(f.reddito) > 25 Query Scorretta: Select padre, avg(f.reddito) From persone f join paternita on figlio = f.nome group by padre where avg(f.reddito) > 25

WHERE o HAVING? I padri i cui figli sotto i 30 anni hanno un reddito medio maggiore di 20 Query corretta: Select padre, avg(f.reddito) from persone f join paternita on figlio = f.nome where eta < 30 group by padre having avg(f.reddito) > 25 Query corretta: Select padre, avg(f.reddito) from persone f join paternita on figlio = f.nome group by padre having avg(f.reddito) > 25 and eta < 30 NOTA: having è una condizione di selezione su gruppi, si usa quindi con attributi, della target list, su cui agiscono operatori aggregati

Sintassi, riassumiamo Struttura generale Query SQL : Select ListaAttributi_o_Espressioni from ListaTabelle [ where CondizioniSemplici ] [ group by ListaAttributi_di_Raggruppamento ] [ having CondizioniAggregate ] [ order by ListaAttributi_di_Ordinamento ]