Esercizi di SQL 1- SELEZIONI SEMPLICI 1 2- SELEZIONI CON PROIEZIONI 1 3- FUNZIONI DI INSIEME 2 4- FUNZIONI DI AGGREGAZIONE 2 5- HAVING 3

Documenti analoghi
Esercizi di SQL. 3) cognome e nome dei clienti che abitano a Rimini e guadagnano più di 3000;

Soluzioni 1.1. SELECT cognome FROM dipendenti; 1.2. SELECT nome FROM dipendenti; 1.3. SELECT cognome, nome FROM dipendenti; 1.4

Data la seguente tabella :

Esercizi SQL. Dato il seguente schema di una base di dati dove gli attributi che compongono la chiave sono scritti in grassetto

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

Linguaggio SQL seconda parte

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

Tipi di sottoquery SQL

<Nome Tabella>.<attributo>

SQL - Sottointerrogazioni

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

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

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

Caratteristiche dei linguaggi per Database

Eprogram ITIS V anno Unità 4 - Il linguaggio SQL

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

Interrogazioni complesse. SQL avanzato 1

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

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

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

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

SQL e ACCESS. Modello relazionale PROBLEMA ENTITA STUDENTE

Esempi SQL con Access. Orazio Battaglia

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

Basi di Dati. S Q L Lezione 4

Corso di Basi di Dati

Basi di Dati Corso di Laura in Informatica Umanistica

SQL: definizione schema

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

Basi di dati I Prova di autovalutazione 30 ottobre 2014

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

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

Basi di Dati Corso di Laura in Informatica Umanistica

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

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

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

Basi di Dati. S Q L Lezione 2

Prova del 14/09/09. Considerare la seguente descrizione di un campeggio:

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

Interrogazioni nidificate

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

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

Interrogazioni nidificate

Basi di Dati. Esercitazione SQL. Ing. Paolo Cappellari

Basi di Dati Esempi di SQL

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

Modello concettuale dei dati. Paolo Brunasti - UniMiB 1 / 12

Istruzioni DML di SQL

Basi di Dati DBDMG - Politecnico di Torino Esercizi di SQL

Basi di Dati: Corso di laboratorio

SQL - Funzioni di gruppo

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

DATABASE CLIENTIRAPPRESENTANTI

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

Si definisca il relativo schema E/R (nella metodologia proposta a lezione) e si evidenzino eventuali vincoli inespressi e attributi derivati.

Basi di Dati: Corso di laboratorio

Vogliamo creare una anagrafe e poi creare delle query che rispondono a delle domandi. Utilizzando Microsoft Access

Esercizio sul modello Entità-Associazione, traduzione in relazionale e interrogazioni SQL

Esercitazione su SQL

Capitolo 4. SQL: il linguaggio di interrogazione. Originato da SEQUEL-XRM e System-R ( ) dell IBM

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

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

Data management a.a Il linguaggio SQL

SQL. SQL: "storia. Sviluppato nella metà degli anni settanta (1974) presso il laboratorio di ricerca IBM di S.Josè. Dal 1983 ca. "standard di fatto"

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

Concettuale. Giuseppe Amato

1) Semplicissimi esercizi introduttivi

Esercizio con attributo cross-dimensionale - transazionale

Il linguaggio SQL: query innestate

Basi di Dati Esempi di SQL

Esempio di database relazionale con l utilizzo del prodotto MySQL

Esercitazione SQL. Università degli Studi del Sannio Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica

MAX, SUM, AVG, COUNT)

ESERCIZI INTERROGAZIONI SQL

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio

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

SQL (STRUCTURED QUERY LANGUAGE)

Alessandra Raffaetà. Qualificazione: notazione con il punto

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

Esprimere in algebra (ottimizzata), calcolo relazionale la seguente query:

Attività di laboratorio sull istruzione SELECT

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate)

PROVA SCRITTA DI TECNOLOGIA DATABASE 02/12/2004 Corso di Laurea Specialistica in Ingegneria Informatica - NOD PROF.

ACCESS Esercitazione (query complesse) Ing. Cosimo Orlacchio

Archivi e database. Dato e gli archivi

Il linguaggio SQL: le viste

Basi di dati: appello 28/02/06

SQL come linguaggio di interrogazione. Basi di dati. Interrogazioni SQL. Interpretazione algebrica delle query SQL

SQL e algebra relazionale

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

Le query di comando e di servizio in Access

Esame Basi di Dati. 21 Gennaio 2013

Database Lezione 1. Sommario. - Introduzione - Tabelle e chiave primaria - Query - Calcoli ed alias - Ordinamento

Laura Farinetti - DAUIN Politecnico di Torino. Sia dato lo schema relazionale costituito dalle tabelle (le chiavi primarie sono sottolineate)

1. Per ogni film in cui appaiono solo attori nati prima del 1970 restituire il titolo del film.

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

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

ESERCIZI SQL. Esercizio 1

LO SVOLGIMENTO DEL TEMA DI INFORMATICA

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Transcript:

Esercizi di SQL 1- SELEZIONI SEMPLICI 1 2- SELEZIONI CON PROIEZIONI 1 3- FUNZIONI DI INSIEME 2 4- FUNZIONI DI AGGREGAZIONE 2 5- HAVING 3 6- QUERY MULTIPLE 3 7- JOIN 4

1- Selezioni semplici Data la tabella: Clienti Cognome Nome Citta Salario Eta Bianchi Mario Rimini 1000 20 Bianchi Ettore Milano 0 15 Casadei Mario Rimini 3000 35 Rossi Mario Bologna 1500 50 Rossi Fabio Firenze 8000 40 Bianchi Ettore Rimini 4500 25 Neri Fabio Arezzo 3500 35 1) scrivere la query che restituisce i cognomi presenti; 2) scrivere la query che restituisce i nomi presenti; 3) scrivere la query che restituisce cognomi e nomi; 4) scrivere la query che restituisce cognome, nome e città di residenza di tutti i clienti; 5) scrivere la query che restituisce tutti i campi di ogni cliente. 2- Selezioni con proiezioni Data la tabella: Clienti:=<Cognome, Nome, Citta, Salario, Eta> 1) Scrivere la query che restituisce nome e cognome di chi guadagna più di 3000; 2) Scrivere la query che restituisce cognome e nome dei clienti che abitano a Rimini; 3) Scrivere la query che restituisce cognome e nome dei clienti che abitano a Rimini e guadagnano più di 3000; 4) Scrivere la query che restituisce cognome, nome e salario dei clienti che hanno età compresa fra 20 e 35 anni (estremi compresi); 5) Scrivere la query che restituisce cognome, nome e salario dei clienti che risiedono a Rimini e hanno meno di 20 anni o più di 30. 1

3- Funzioni di Insieme Data la tabella: Clienti:=<Cognome, Nome, Citta, Salario, Eta> 1) Scrivere la query che restituisce il salario massimo; 2) Scrivere la query che restituisce l età media; 3) Scrivere la query che restituisce il salario massimo dei clienti che abitano a Rimini; 4) Scrivere la query che restituisce il salario massimo dei clienti con età compresa tra 25 e 40 anni (estremi esclusi); 5) Scrivere la query che restituisce il salario minimo dei clienti residenti a Rimini con età compresa tra 25 e 40 anni (estremi inclusi); 6) Scrivere la query che restituisce il numero di clienti che hanno età minore di 25 anni o maggiore di 35. 4- Funzioni di Aggregazione Data la tabella: Clienti:=<Cognome, Nome, Citta, Salario, Eta> 1) Scrivere la query che restituisce l età media della tabella; 2) Scrivere la query che restituisce l età media per ogni città; 3) Scrivere la query che restituisce il salario massimo dei riminesi; 4) Scrivere la query che, per ogni città, restituisce il nome della città, il numero di abitanti e la loro età media. 5) Scrivere la query che, per ogni città, restituisce il nome della città e il numero di abitanti ordinando il risultato per numero di abitanti. 2

5- Having Data la tabella: Clienti:=<Cognome, Nome, Citta, Salario, Eta> 1) Scrivere la query che restituisce città ed età media delle città la cui età media sia maggiore di 30 anni; 2) Scrivere la query che restituisce città e stipendio massimo di ogni città la cui età media sia inferiore a 35 anni; 3) Ritornare città, stipendio medio ed età media di tutti i clienti che hanno età compresa fra 20 e 40 anni purché siano almeno 2. 6- Query Multiple Data la tabella: Clienti:=<Cod_cli,Cognome, Nome, Citta, Salario, Eta> Prenot:=<Cod_cli, Cod_alb, Camera, Giorni, Acconto > Alberghi:=<Cod_alb, Nome, Citta > 1) Ritornare tutti i dati dei clienti che hanno età uguale all età minima della tabella; 2) Ritornare tutti i dati dei clienti che guadagnano più della media; 3) Ritornare cognome nome e salario dei clienti che abitano in città che contengono almeno 2 clienti; 4) Ritornare tutti i dati dei clienti che abitano nelle città in cui l età media è inferiore all età media di tutta la tabella; 5) Ritornare tutti i dati dei clienti che hanno almeno 30 anni e che hanno una prenotazione per la camera 25 o per la camera 18; 6) Ritornare tutti i dati dei clienti che hanno versato un acconto superiore alla media. 3

7- Join Date le tabelle: Clienti:=<Cod_cli,Cognome, Nome, Citta, Salario, Eta> Prenot:=<Cod_cli, Cod_alb, Camera, Giorni, Acconto > Alberghi:=<Cod_alb, Nome, Citta > 1) Ritornare tutti i dati dei clienti che hanno una prenotazione per la camera 25; 2) Ritornare tutti i dati dei clienti e delle relative prenotazioni per tutti coloro che hanno età compresa fra 25 e 40 anni; 3) Ritornare tutti i dati delle prenotazioni effettuate da clienti che risiedono a Milano; 4) Ritornare cognome, nome, acconto e camera dei clienti che hanno versato un acconto superiore a 100.000 e che hanno più di 25 anni; 5) Per ogni albergo ritornare cognome, nome e città dei clienti che hanno versato un acconto superiore alla media; 6) Ritornare nome dell albergo, cognome, nome e città di residenza dei 5 clienti che hanno prenotato per i periodi più lunghi; 7) Per ogni albergo ritornare cognome, nome e città dei clienti che hanno versato un acconto superiore alla media di quell albergo. 8) Ritornare cognome, nome e città dei clienti, nome e città dell albergo per coloro che hanno stipendio superiore alla media della città in cui abitano e hanno prenotato per un periodo superiore alla media del loro albergo, per calcolare il risultato considerare solamente i clienti che hanno effettuato almeno una prenotazione valida (controllare che per la prenotazione esistano sia il codice del cliente che quello dell albergo). 4

Soluzioni 1 1.1 1.2 1.3 1.4 1.5 SELECT cognome ; SELECT nome ; SELECT cognome, nome ; SELECT cognome, nome, citta ; ; 2 2.1 2.2 2.3 2.4 SELECT nome, cognome WHERE stipendio>3000; SELECT cognome, nome WHERE citta= rimini ; SELECT cognome, nome WHERE citta= rimini AND stipendio>3000; SELECT cognome, nome, salario WHERE eta>=20 AND eta<=35; 5

2.5 SELECT cognome, nome, salario WHERE citta= rimini AND (eta<20 OR eta>30); 3 3.1 3.2 3.3 3.4 3.5 3.6 SELECT MAX(salario) ; SELECT AVG(eta) ; SELECT MAX(salario) WHERE citta= rimini ; SELECT MAX(salario) WHERE eta>25 AND eta<40; SELECT MAX(salario) WHERE citta= rimini AND eta>=25 AND eta<=40; SELECT COUNT(*) WHERE eta<25 OR eta>35; 4 4.1 4.2 SELECT AVG(eta) ; SELECT citta,avg(eta) ; 6

4.3 4.4 4.5 SELECT citta, MAX(salario) WHERE citta= rimini ; SELECT citta, COUNT(*), AVG(eta) ; SELECT citta, COUNT(*) ORDER BY COUNT(*); 5 5.1 5.2 5.3 SELECT citta, AVG(eta) HAVING AVG(eta)>30; SELECT citta,max(salario) HAVING AVG(eta)<35; SELECT citta, AVG(salario),AVG(eta) WHERE eta > 20 AND eta < 40 HAVING COUNT(*)>=2; 6 6.1 SELECT MIN(eta) ; WHERE eta = A; WHERE eta = (SELECT MIN(eta) ); 7

6.2 6.3 6.4 6.5 SELECT AVG(salario) ; WHERE salario > A; SELECT citta HAVING COUNT(*) >= 2; SELECT cognome, nome WHERE citta IN A; SELECT AVG(eta) ; SELECT citta HAVING AVG(eta) <A; C: WHERE citta IN B; SELECT cod_cli WHERE camera= 25 OR camera= 18 ; WHERE codice IN A AND eta>=30; WHERE salario > (SELECT AVG(salario) ); SELECT cognome, nome WHERE citta IN (SELECT citta HAVING COUNT(*) >= 2); WHERE citta IN (SELECT citta HAVING AVG(eta) <(SELECT AVG(eta) )); WHERE eta >= 30 AND codice IN (SELECT cod_cli WHERE camera="25" OR camera="18"); 8

6.6 7 7.1 7.2 SELECT AVG(acconto) ; SELECT cod_cli WHERE acconto > A; C: WHERE codice IN B; SELECT clienti.*,prenot WHERE clienti.cod_cli=prenot.cod_cli AND camera= 25 ;, prenot WHERE clienti.cod_cli=prenot.cod_cli AND eta>25 AND eta<40; WHERE codice IN (SELECT cod_cli WHERE acconto > (SELECT AVG(acconto) )); SELECT cod_cli WHERE camera= 25 ; WHERE cod_cli IN A; 7.3 SELECT prenot.*, prenot WHERE codice=cod_cli AND citta= milano ; SELECT codice WHERE citta= milano ; WHERE cod_cli IN A; 9

7.4 7.5 SELECT cognome, nome, acconto, camera, prenot WHERE clienti.cod_cli=prenot.cod_cli AND prenot.acconto>100000 AND clienti.eta>25; SELECT AVG(acconto) ; SELECT codice, prenot WHERE clienti.cod_cli=prenot.cod_cli AND prenot.acconto>100000 AND clienti.eta>25; SELECT cognome, nome, acconto, camera, prenot WHERE clienti.cod_cli=prenot.cod_cli AND codice IN A; SELECT alberghi.nome, clienti.cognome, clienti.nome, clienti.citta, prenot, alberghi WHERE clienti.cod_cli = prenot.cod_cli AND prenot.cod_alb = alberghi.cod_alb AND prenot.acconto>a; 7.6 SELECT TOP 5 alberghi.nome, clienti.cognome, clienti.nome, clienti.citta, prenot, alberghi WHERE clienti.cod_cli = prenot.cod_cli AND prenot.cod_alb = alberghi.cod_alb ORDER BY prenot.giorni DESC; 7.7 Acconti: SELECT cod_alb, AVG(acconto) AS media GROUP BY cod_alb; SELECT alberghi.nome, clienti.cognome, clienti.nome, clienti.citta, acconti, prenot, alberghi WHERE clienti.cod_cli=prenot.cod_cli AND prenot.cod_alb=acconti.cod_alb AND prenot.cod_alb=alberghi.cod_alb AND prenot.acconto >= acconti.media; 10

7.8 SALARI: SELECT clienti.citta, AVG(clienti.salario) AS sal_med, prenot, alberghi WHERE clienti.cod_cli = prenot.cod_cli AND prenot.cod_cli=alberghi.cod_cli GROUP BY clienti.citta; PERIODI: SELECT alberghi.cod_alb, AVG(prenot.giorni) AS per_med, prenot, alberghi WHERE clienti.cod_cli = prenot.cod_cli AND prenot.cod_cli=alberghi.cod_cli GROUP BY alberghi.cod_alb; FINALE: SELECT clienti.cognome, clienti.nome, clienti.citta, alberghi.nome, alberghi.citta, prenot, alberghi, salari, periodi WHERE clienti.cod_cli = prenot.cod_cli AND prenot.cod_alb = alberghi.cod_alb AND alberghi.cod_alb = periodi.cod_alb AND salari.citta = clienti.citta AND clienti.salario > salari.sal_med AND prenot.giorni > periodi.per_med; 11