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

Documenti analoghi
SQL seconda 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

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4

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

Operazioni su insiemi: unione, intersezione e differenza

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

Operatori aggregati: COUNT

Structured Query Language

Operatori aggregati: COUNT

IL LINGUAGGIO SQL LE BASI

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

Gestione dei valori nulli

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

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

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

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

SQL seconda 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 2012/13

Corso sul linguaggio SQL

Interrogazioni complesse. SQL avanzato 1

Basi di Dati. Esercitazione SQL. 17 novembre 2011

Corso di Basi di Dati

Interrogazioni semplici

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

Monday, January 24, 2011 SQL

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

SQL - Structured Query Language

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

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Raggruppamento. Raggruppamento

<Nome Tabella>.<attributo>

Il linguaggio SQL: raggruppamenti

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

A.A. 2018/2019. Funzioni di Aggregazione e Raggruppamenti in SQL FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

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

Esempi di Query con Aggregazioni in SQL/1

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

Il linguaggio SQL: raggruppamenti

Queries su più tabelle

Linguaggio SQL: fondamenti D B M G

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

Il linguaggio SQL: raggruppamenti

Progettazione di Sistemi Informatici

Linguaggio SQL: fondamenti D B M G

Elena Baralis 2007 Politecnico di Torino 1

SQL /10/2016 Basi di dati - SQL 1

Archivi e basi di dati - ing. M. Cossentino. Settore. Traccia 1. Traccia 200. Settore non polarizzato

Laboratorio di. Docenti: Alberto Belussi e Carlo Combi

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

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

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

Il linguaggio SQL - Interrogazioni -

Principi di Progettazione del Software a.a Il linguaggio SQL. Il Linguaggio SQL

Sistemi di Elaborazione delle Informazioni

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

Basi di Dati: Corso di laboratorio

ISBN Titolo CasaEd AnnoEd

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

Elena Baralis 2007 Politecnico di Torino 1

Esempi SQL con Access. Orazio Battaglia

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

Lezione 7 SQL (II) Basi di dati bis Docente Mauro Minenna Pag.1

QL (Query Language) Alice Pavarani

Linguaggi per basi di dati e SQL

Linguaggi per basi di dati. Linguaggi per basi di dati e SQL. Linguaggi di interrogazione per basi di dati relazionali. Linguaggi di interrogazione

Estensioni del linguaggio SQL per interrogazioni OLAP

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

Linguaggio SQL seconda parte

Basi di Dati: Corso di laboratorio

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

Business Intelligence

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

Laboratorio di Basi di Dati e Web

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

SQL - Sottointerrogazioni correlate

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

Basi di Dati. S Q L Lezione 4

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

Operatori derivati dagli insiemi. Algebra Relazionale. Unione. Operatori derivati dagli insiemi

4.SQL QUERY. Fare una query significa fare delle ricerche sul nostro database.

Interrogazioni di tipo insiemistico. Select. Interrogazioni di tipo insiemistico. Interrogazioni nidificate

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

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

Basi di Dati: Corso di laboratorio

SQL è stato definito nel 1973 ed è oggi il linguaggio universale dei sistemi relazionali

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

Linguaggi per Basi di Dati - 1. Algebra Relazionale. Algebra Relazionale. Linguaggi per Basi di Dati - 2. Operatori Insiemistici.

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

Persona(CodiceFiscale, Cognome, Nome, DataDiNascita, LuogoDiNascita, Indirizzo)

Idoneita Informatica. Sistemi per la gestione di basi di Dati

SQl come DML. Angelo Chianese,, Vincenzo Moscato, Antonio Picariello,, Lucio Sansone

Manuale SQL. Manuale SQL - 1 -

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

Parte III. L algebra relazionale

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

Laboratorio di Basi di dati/web/mm e Basi di dati per Bioinformatica

SQL e algebra relazionale

Corso di Basi di Dati

Consideriamo lo schema relazionale

Interrogazioni in SQL SQL. Interrogazioni in SQL. Cenni sull implementazione

Transcript:

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

Operatori aggregati Costituiscono una estensione delle normali interrogazioni SQL (non hanno corrispondenza in algebra relazionale). 2 Hanno le seguenti caratteristiche Vengono applicati all insieme di tuple risultato di una interrogazione SQL. Agiscono su uno o più attributi delle tuple risultato. Producono UN SOL VALORE. Si specificano nella clasuola SELECT.

Operatori aggregati In SQL-92 esistono 5 operatori aggregati standard: COUNT Sintassi Semantica: COUNT( [ DISTINCT ALL ] <listaattributi> ) COUNT(*) restituisce il numero di tuple contenute nel risultato dell interrogazione SQL COUNT(ALL <listaattributi>) in questo caso si considerano le combinazioni dei valori degli attributi <listaattributi> contenute nelle tuple risultato e si restiuisce il numero di combinazioni che non contengono valori nulli COUNT(DISTINCT <listaattributi>) come ALL ma restituisce il numero di combinazioni distinte. 3

SUM, MAX, MIN, AVG Sintassi Operatori aggregati SUM MAX MIN AVG ([ DISTINCT ALL ] <espressione>) Semantica: SUM MAX MIN AVG (ALL <espressione>) in questo caso si valuta l espressione <espressione>, si eliminano i valori nulli e si applica l operazione: SUM: sommatoria MAX: calcolo del valore massimo MIN: calcolo del valore minimo AVG: calcolo della media aritmetica SUM MAX MIN AVG (DISTINCT <espressione>) come ALL ma prima di applicare l operazione si eliminano i duplicati. 4

Interrogazioni con operatori aggregati: esempi CLIENTE(CF, Nome, Cognome, Prof, DataN, Città) FILIALE(Codice, Nome, Indirizzo, Città) CONTO(Filiale, Numero, Saldo) INTESTAZIONE(FilialeCC, NumeroCC, Cliente) MOVIMENTO(FilialeCC, NumeroCC, Num, Tipo, Data, Imp) Esempio Trovare il saldo medio e massimo dei conti correnti delle filiali di Verona. SELECT MAX(C.saldo), AVG(C.saldo) FROM CONTO C, FILIALE F WHERE C.Filiale = F.Codice AND F.Città = Verona 5

Interrogazioni con operatori aggregati Vincolo sintattico Se la clausola SELECT contiene operatori aggregati NON PUO contenere attributi singoli o espressioni su attributi. 6 NON è sintatticamente corretta l interrogazione seguente: SELECT FILIALE, NUMERO, MAX(saldo) FROM CONTO

Interrogazioni con raggruppamento Permettono di applicare un operatore aggregato distintamente a sottoinsiemi di tuple della relazione risultato di una interrogazione SQL. Come viene divisa la relazione risultato in sottoinsiemi di tuple? La suddivisione viene eseguita raggruppando insieme tutte le tuple che presentano gli stessi valori per un insieme di attributi assegnato attraverso una clausola aggiuntiva: 7 Clausola GROUP BY

Sintassi Clausola GROUP BY SELECT <listaattributi> FROM WHERE GROUP BY <Attributo> {, <Attributo>} ORDER BY 8 Vincolo sintattico: <listaattributi> può contenere solo operatori aggregati applicati a espressioni oppure attributi indicati nella clausola GROUP BY.

Semantica Clausola GROUP BY Viene eseguita l interrogazione base (SELECT FROM WHERE ). Vengono generati i gruppi di tuple in base agli attributi indicati nella clausola GROUP BY (vanno nello stesso gruppo le tuple che presentano gli stessi valori negli attributi indicati nel GROUP BY). 9 Si applicano gli operatori aggregati ad ogni gruppo producendo una tupla nella relazione risultato per ogni gruppo.

Sintassi Clausola HAVING 10 SELECT <listaattributi> FROM WHERE GROUP BY <Attributo> {, <Attributo>} HAVING <condizione_sel_gruppi> ORDER BY <condizione_sel_gruppi>: è un espressione booleana dove le formule atomiche sono del tipo: operatoreaggr(<espr>) <costante> operatoreaggr(<espr>) operatoreaggr(<espr>)

Interrogazioni con operatori aggregati: esempi CLIENTE(CF, Nome, Cognome, Prof, DataN, Città) FILIALE(Codice, Nome, Indirizzo, Città) CONTO(Filiale, Numero, Saldo) INTESTAZIONE(FilialeCC, NumeroCC, Cliente) MOVIMENTO(FilialeCC, NumeroCC, Num, Tipo, Data, Imp) Esempio Trovare il saldo medio e massimo dei conti correnti delle filiali della banca riportando anche il nome della filiale. SELECT MAX(C.saldo), AVG(C.saldo), F.Nome 11 FROM CONTO C, FILIALE F WHERE C.Filiale = F.Codice GROUP BY F.Codice, F.Nome

Interrogazioni con operatori aggregati: esempi CLIENTE(CF, Nome, Cognome, Prof, DataN, Città) CONTO(Filiale, Numero, Saldo) INTESTAZIONE(FilialeCC, NumeroCC, Cliente) Esempio Trovare il nome e il cognome dei clienti che possiedono conti con un saldo medio < 1000 euro. SELECT CL.Nome, CL.Cognome FROM CONTO C, CLIENTE CL, INTESTAZIONE I WHERE I.Cliente = CL.CF AND C.Numero = I.NumeroCC AND C.Filiale = I.FilialeCC GROUP BY CL.CF, CL.Nome, CL.Cognome 12 HAVING AVG(C.saldo) < 1000

Interrogazioni con operatori aggregati CLIENTE(CF, Nome, Cognome, Prof, DataN, Città) FILIALE(Codice, Nome, Indirizzo, Città) CONTO(Filiale, Numero, Saldo) INTESTAZIONE(FilialeCC, NumeroCC, Cliente) MOVIMENTO(FilialeCC, NumeroCC, Num, Tipo, Data, Imp) Trovare il nome, il cognome e il numero di conti aperti dai clienti di professione avvocato. SELECT CL.Nome, CL.Cognome, COUNT(*) AS N_Conti FROM CLIENTE CL, INTESTAZIONE I WHERE CL.CF = I.Cliente AND CL.Prof = Avvocato 13 GROUP BY CL.CF, CL.Nome, CL.Cognome

Interrogazioni con operatori aggregati CLIENTE(CF, Nome, Cognome, Prof, DataN, Città) FILIALE(Codice, Nome, Indirizzo, Città) CONTO(Filiale, Numero, Saldo) INTESTAZIONE(FilialeCC, NumeroCC, Cliente) Trovare per ogni filiale di Milano con più di 500 conti correnti aperti, il saldo massimo riportando anche il codice e il nome della filiale. SELECT F.Codice, F.Nome, MAX(C.saldo) FROM FILIALE F, CONTO C WHERE F.Codice = C.Filiale AND F.Città = Milano GROUP BY F.Codice, F.Nome HAVING COUNT(*) > 500 14

Interrogazioni con operatori aggregati CLIENTE(CF, Nome, Cognome, Prof, DataN, Città) FILIALE(Codice, Nome, Indirizzo, Città) CONTO(Filiale, Numero, Saldo) INTESTAZIONE(FilialeCC, NumeroCC, Cliente) Trovare il numero di conti aperti per ogni categoria professionale. SELECT CL.Prof, COUNT(DISTINCT CL.CF) AS N_Conti FROM CLIENTE CL, INTESTAZIONE I WHERE CL.CF = I.Cliente GROUP BY CL.Prof 15