Esercitazione 6 SQL 3

Documenti analoghi
Laboratorio linguaggio SQL

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

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

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

Operatori aggregati: COUNT

Operatori aggregati: COUNT

Operazioni su insiemi: unione, intersezione e differenza

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

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

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

SQL - Structured Query Language

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

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4

SQL /10/2016 Basi di dati - SQL 1

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

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

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

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

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

Esercitazione 3 SQL 2

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

Basi di Dati. Esercitazione SQL. 17 novembre 2011

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

3. Selezionare i nomi dei clienti che iniziano con le lettere P, Q, R, S

Laboratorio di Basi di Dati

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

formulare in SQL una interrogazione per ciascuno dei seguenti punti:

Corso di. Basi di Dati I. 11. Esercitazioni in SQL: Altri esercizi

Esercitazione 7 Correzione della prova di autovalutazione

Gestione dei valori nulli

Laboratorio di Basi di dati Soluzioni della V esercitazione - 23 aprile 2007

Basi di Dati. S Q L Lezione 4

SQL operazioni sui dati: interrogazioni con join e prodotti cartesiano

Basi di dati (4) Docente: Andrea Bulgarelli. Università di Modena e Reggio Emilia. Argomento: select (1.

Seconda esercitazione su SQL (con soluzioni) Basi di dati A.A. 2017/18 Maurizio Lenzerini

Esercitazione 1. ogni tupla contribuisce al risultato: Impiegato Reparto Rossi. Bruni. Bianchi

SQL. Esercitazione 6-7. Contatti: Dott.ssa Silvia Bonfanti

Sia dato il seguente schema di base di dati:

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

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

SQL. Esercitazione. Contatti: Dott. Domenico Fabio Savo

Select Anagrafiche, Movimenti From Descrizione? Where Anagrafiche.Codice=Codice And Cognome=' Bianchi ';

Basi di dati Corso di Laurea in Informatica Umanistica

Esempi di Query SQL Complesse basate su Viste

Corso di. Basi di Dati I. 8. Esercitazioni in SQL: Interrogazioni nidificate

Basi di Dati: Corso di laboratorio

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

Business Intelligence

Parte IV Il linguaggio SQL

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Interrogazione 1 Trovare nomi e cognomi dei contatti dei clienti di nazionalità italiana.

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

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

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

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

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di dati I 8 luglio 2016 Esame Compito A Tempo a disposizione: un ora e trenta minuti.

Corso sul linguaggio SQL

Esercitazione 1. ogni tupla contribuisce al risultato: Impiegato Reparto Rossi. Bruni. Bianchi

SQL Laboratorio di Basi di Dati a.a. 2002/2003

Basi di dati I Prova di autovalutazione 1 novembre 2016 Soluzioni

Il linguaggio SQL - Interrogazioni -

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

Esercitazione: Interrogazioni SQL

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.

Basi di Dati - Informatica umanistica Esercitazione (Lab)

ed SQL 10 Novembre 2009

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

Linguaggio SQL seconda parte

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

Esercitazione 2 SQL 1 (installazione MySQL)

Idoneita Informatica. Sistemi per la gestione di basi di Dati

Basi di Dati. S Q L Lezione 3

Basi di Dati Corso di Laura in Informatica Umanistica

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

ESERCIZIO 1. B. Estrarre nome, cognome e codice degli utenti che non hanno mai preso in prestito libri di informatica.

Esempi SQL con Access. Orazio Battaglia

Esercitazione su SQL

Si consideri la realtà medica descritta dalla base di dati relazionale definita dal seguente schema:

McGraw-Hill. Soluzioni degli esercizi. Tutti i diritti riservati. Capitolo SELECT Neg_Nome FROM Negozi. 2. SELECT Neg_Cod FROM Ordini

Interpretazione delle query nidificate

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

Tabelle esempio: Impiegato/Dipartimento

Basi di dati: appello 14/07/06

Cross Join. Sintassi ANSI SQL-92

Interrogazioni nidificate

Basi di dati I Prova di autovalutazione 30 ottobre 2014

5.1- Le operazioni: esempi

Structured Query Language

Primo compitino di Basi di Dati - 3/4/2019 testo 1

Transcript:

Esercitazione 6 SQL 3 Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-1

Schema della base di dati Customers (CustomerID, ComapnyName, City, Phone) Employees (EmpoyeeID, LastName, FirstName, HireDate, City) Orders (OrderID, CustomerID, EmpoyeeID, OrderDate) Orders Details (OrderID, ProductID, Quantity) Products (ProductID, ProductName, UnitPrice) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-2

Esempio 1 Query 1: Il nome e cognome degli impiegati che hanno gestito ordini di clienti di Madrid prima del 15 maggio 1998 select E.FirstName, E.LastName, O.OrderDate from Employees E, Orders O, Customers C where E.EmployeeID=O.EmployeeID AND C.CustomerID=O.CustomerID AND C.City='Madrid' AND O.OrderDate < '15 maggio 1998' Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-3

Esempio 2 Query 2: Il nome e cognome degli impiegati che hanno gestito almeno tre ordini di clienti di Madrid select FirstName, LastName from Employees E, Orders O, Customers C where E.EmployeeID=O.EmployeeID AND C.CustomerID=O.CustomerID AND C.City='Madrid' group by EmployeeID, FirstName, LastName having count(*) => 3 Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-4

Esempio 2 bis Query 2: Il nome e cognome degli impiegati che hanno gestito almeno due ordini di clienti di Madrid select distinct FirstName, LastName from Employees E, Orders O, Customers C, Orders O2, Customers C2 where E.EmployeeID=O.EmployeeID AND E.EmployeeID=O2.EmployeeID AND C.CustomerID=O.CustomerID AND C2.CustomerID=O2.CustomerID AND C.City='Madrid' AND C2.City='Madrid' AND O.OrderID > O2.OrderID Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-5

Esempio 3 Query 3: Il nome di tutte le società di Madrid che non hanno ordini nel database select distinct CompanyName from Customers C left join Orders O on C.CustomerID=O.CustomerID where OrderID is null AND City='Madrid' Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-6

Esempio 3 bis Query 3: Il nome di tutte le società di Madrid che non hanno ordini nel database select CompanyName from Customers where City='Madrid' AND CostomerID not in (select CostomerID from Orders) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-7

Esempio 4 Query 4: I nomi e le città degli impiegati che hanno gestito ordini di clienti della loro stessa città select distinct Lastname, E.City from Employees E,Customers C, Orders O where O.EmployeeID=E.EmployeeID AND O.CustomerID=C.CustomerID AND C.City=E.City Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-8

Esempio 5 Query 5: Il numero di città diverse in cui si trovano i clienti di cui ciascun impiegato ha gestito gli ordini create view EmployeeCity as select distinct E.EmplyeeID,E.Lastname,C.City from Employees E, Orders O, Customers C where O.EmployeeID=E.EmployeeID AND O.CustomerID=C.CustomerID; select LastName, count(*) as NumCity from EployeeCity group by EmplyeeID, LastName order by count(*); Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-9

Esempio 5 bis Query 5: Il numero di città diverse in cui si trovano i clienti di cui ciascun impiegato ha gestito gli ordini select Lastname, count(distinct C.City) from Employees E, Orders O, Customers C where O.EmployeeID=E.EmployeeID AND O.CustomerID=C.CustomerID; group by EmployeeID, Lastname order by count(*); Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-10

Esempio 6 Query 6: I nomi degli impiegati che non hanno mai gestito ordini di società con sede a Madrid create view OrdersMadrid as select O.EmployeeID from Orders O, Customers C where C.CustomerID=O.CustomerID AND C.City='Madrid' select LastName from Employees E left join OrdersMadrid OM on E.EmployeeID=OM.EmployeeID where OM.EmployeeID is null Senza query nidificata Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-11

Esempio 6 bis Query 6: I nomi degli impiegati che non hanno mai getsito ordini di società con sede a Madrid select LastName from Employees Where EmployeeID not in (select O.EmployeeID from Orders O, Customers C where C.CustomerID=O.CustomerID AND C.City='Madrid ) Con query nidificata Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-12

Esempio 8 Query 8: Il massimo numero di ordini fatto da uno stesso impiegato durante il 1997 create view Ordini97 as select EmployeeID, count(*) as NumOrders from Orders O where O.OrderDate > '31 dicembre, 1996' AND O.OrderDate < '1 gennaio, 1998' group by EmployeeID select max(numorders) from Ordini97 Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-13

Esempio 9 Query 9: Il nome dell impiegato che ha fatto il massimo numero di ordini fatto durante il 1997 create view Ordini97 as Select EmployeeID,Lastname,count(*) as NumOrders from Employees E, Orders O where E.EmployeeID=O.EmployeeID AND O.OrderDate > '31 dicembre, 1996' AND O.OrderDate < '1 gennaio, 1998' group by EmployeeID, Lastname select Lastname, NumOrders From Ordini97 Where NumOrders = (select max(numorders) from Ordini97) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-14

Database Persone Persone (Nome, Età, Reddito) Maternità (Madre, Figlio) Paternità (Padre, Figlio) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-15

Esempio 10 Query 10: Il nome delle persone che hanno un reddito maggiore del reddito di tutte le persone con meno di 30 anni. select P.Nome from Persone P where Reddito > all (select Reddito from Persone where Età < 30) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-16

Esempio 10 bis Query 10: Il nome delle persone che hanno un reddito maggiore del reddito di tutte le persone con meno di 30 anni. select P.Nome from Persone P where Reddito > (select max(reddito) from Persone where Età < 30) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-17

Esempio 11 Query 11: Il nome delle persone che hanno almeno un figlio select Nome from Persone P where exists (select * from Paternità where Padre = P.nome) or exists (select * from Maternità where Madre = P.nome) N.B. La query nidificata ha consentito di fare anche una Union Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-18

Esempio 11b Query 11: Il nome delle persone che hanno almeno un figlio select Nome from Persone P where exists (select * from Paternità where Padre = P.nome) union select Nome from Persone P where exists (select * from Maternità where Madre = P.nome) N.B. La query nidificata ha consentito di fare anche una Union Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-19

Esempio 12 Query 12: Nome ed età delle madri che hanno almeno un figlio minorenne select from where distinct P.Nome, P.Età Persone P, Maternità M P.Nome = M.Madre and M.Figlio in (select Nome from Persone where Età < 18) (Un join e una interrogazione nidificata) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-20

Esempio 12 bis Query 12: Nome ed età delle madri che hanno almeno un figlio minorenne select Nome, Eta from Persone where Nome in (select Madre from Maternità where figlio in (select nome from Persone where Età<18)) (Due livelli di query nidificate) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-21

Esempio 13 Impiegato (Nome,Cognome) Query 13: Nome di impiegati che sono anche cognomi di impiegati select Nome from Impiegato intersection select Cognome from Impiegato select Nome from Impiegato where Nome in (select Cognome from Impiegato) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-22

Esempio 15 Query 15: Tutti gli ordini con almeno 6 prodotti diversi e almeno 20 pezzi complessivamente select OrderID from [Order Details] group by OrderID having count(distinct ProductID)>=6 AND Sum(Quantity)>=20 Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-23

Esempio 16 Query 16: il nome della società che ha fatto l ordine con più pezzi create view OrderPieces as select O.OrderID,Sum(Quantity) as NumberPieces from Order Details group by OrderID select C.CompanyName from OrderPieces OP, Orders O, Customers C where OP.OrderID=O.OrderID AND O.CustomerID=C.CustomerID AND OP.NumberPieces >= all (select NumberPieces from OrderPieces) Basi di dati - prof. Silvio Salza - a.a. 2017-2018 E6-24