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

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

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

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

QL (Query Language) Alice Pavarani

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

Linguaggio SQL seconda parte

Lezioni di Laboratorio sui Data Base

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

Select From Where...

SQL: le funzioni di aggregazione

Operazioni su insiemi: unione, intersezione e differenza

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

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4

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

Business Intelligence

Corso di Informatica Linguaggio SQL seconda parte

Corso sul linguaggio SQL

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

Interrogazioni nidificate

Structured Query Language

Basi di Dati Corso di Laura in Informatica Umanistica

Sistemi di Elaborazione delle Informazioni

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

Basi di Dati e Sistemi Informativi A 1 A.A. 2009/ /09/10 -A Prof. Paolo Brunasti

ESERCITAZIONI ACCESS

Basi di Dati Corso di Laura in Informatica Umanistica

Basi di Dati Corso di Laura in Informatica Umanistica

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

Esercitazione 2 SQL.

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

Sia dato il seguente schema di base di dati:

Caratteristiche dei linguaggi per Database

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

Laboratorio di Basi di Dati

Istruzioni. DDL: CREATE, DROP e ALTER TABLE. DML: INSERT, DELETE e UPDATE DQL: SELECT. DCL: GRANT e REVOKE

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 3. Panoramica su SQL Prof. Mauro Giacomini

Esercitazioni Basi di dati e web Dario Facchinetti

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

Monday, January 24, 2011 SQL

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

Interrogazioni complesse. SQL avanzato 1

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

Esempi SQL con Access. Orazio Battaglia

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

OPERATORI LOGICI: AND, OR, NOT

Linguaggio SQL: esempi di query. a cura del Prof. Claudio Traini

07/12/2017. a cura del Prof. Claudio Traini. Modello logico utilizzato

Gestione dei valori nulli

Fondamenti di Informatica

Tabelle esempio: Impiegato/Dipartimento

Basi di Dati. Concetti Avanzati

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

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

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

ESERCITAZIONE: AZIENDA

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

Operatori aggregati: COUNT

PRODOTTO CARTESIANO Caso Generale

Interrogazioni nidificate

Basi di dati Appello del Soluzione del compito B

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

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

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

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

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

Operatori aggregati: COUNT

Il linguaggio SQL: raggruppamenti

Interrogazioni complesse. SQL avanzato 1

Interrogazioni con Raggruppamenti

Esercitazione 6 SQL 3

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

Basi di Dati 1 Prof. L. Tanca e F. A. Schreiber APPELLO DEL 1 OTTOBRE 2015 Tempo: 2h30m

Vincoli di integrità generici: check

3. Creare nella propria home directory un file nomescript contenente le definizioni delle 4 tabelle con opportuni comandi create table.

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

VISTE. 19/11/2015 Concetti Avanzati - SQL 71

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

Il linguaggio SQL: raggruppamenti

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

IL LINGUAGGIO SQL LE BASI

Consideriamo lo schema relazionale

<Nome Tabella>.<attributo>

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

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Esempi di Query con Aggregazioni in SQL/1

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

Queries su più tabelle

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

Appunti su SQL. Query Language. Comando Select

DATABASE CLIENTIRAPPRESENTANTI

SQL. Esercitazione. Contatti: Dott. Domenico Fabio Savo

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

Il linguaggio SQL: raggruppamenti

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

Linguaggio SQL. Prof. Giuseppe Tandoi

Appunti su SQL. Query Language. Comando Select

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

Transcript:

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

2.5, salario WHERE citta= rimini AND (eta<20 OR eta>30); 3 3.1 3.2 3.3 3.4 3.5 3.6 3.7 SELECT MIN(salario) ; SELECT AVG(eta) ; SELECT SUM(salario) ; 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; 2

4 4.1 4.2 4.3 SELECT AVG(eta) as età_media ; SELECT citta,avg(eta) as età_media ; SELECT citta, MAX(salario) as salario_massimo WHERE citta= rimini 4.4 4.5 4.6 SELECT citta, COUNT(*) as num_abitanti, AVG(eta) as età_media ; SELECT citta, COUNT(*) as num_dipendenti ORDER BY num_dipendenti; SELECT citta, COUNT(*) as num_dipendenti ORDER BY num_dipendenti DESC; 5 5.1 5.2 SELECT citta, AVG(eta) as età_media HAVING AVG(eta)>30; SELECT citta, MAX(salario) as salario_massimo HAVING AVG(eta)<35; 3

5.3 SELECT citta, AVG(salario) salario_medio, AVG(eta) as età_media WHERE eta > 20 AND eta < 40 HAVING COUNT(*)>=2; 6 6.1 6.2 6.3 6.4 SELECT MIN(eta) ; WHERE eta = A; SELECT AVG(salario) ; WHERE salario > A; SELECT citta HAVING COUNT(*) >= 2; WHERE citta IN A; SELECT AVG(eta) ; SELECT citta WHERE eta = (SELECT MIN(eta) ); WHERE salario > (SELECT AVG(salario) ); WHERE citta IN (SELECT citta HAVING COUNT(*) >= 2); WHERE citta IN (SELECT citta HAVING AVG(eta) <(SELECT AVG(eta) )); 4

HAVING AVG(eta) <A; C: WHERE citta IN B; 6.5 6.6 SELECT cod_cli WHERE camera= 25 OR camera= 18 ; WHERE codice IN A AND eta>=30; SELECT AVG(acconto) ; SELECT cod_cli WHERE acconto > A; WHERE eta >= 30 AND codice IN (SELECT cod_cli WHERE camera="25" OR camera="18"); WHERE codice IN (SELECT cod_cli WHERE acconto > (SELECT AVG(acconto) )); C: WHERE codice IN B; 5

7 Per ognuno dei problemi posti vengono fornite 2 soluzioni: 1. La prima utilizza la congiunzione delle tabelle 2. La seconda ove possibile fa ricorso ad una query nidificata Il fine è quello di dimostrare che è possibile pervenire al risultato desiderato seguendo strade diverse. 7.1 SELECT dipendenti.*,prenot WHERE dipendenti.cod_dip=prenot.cod_dip AND camera='25'; SELECT cod_dip WHERE camera='25'; WHERE cod_dip IN A; 7.2, prenot WHERE dipendenti.cod_dip=prenot.cod_dip AND eta>25 AND eta<40; 7.3 SELECT prenot.*, prenot WHERE dipendenti.cod_dip=prenot.cod_dip AND citta='milano'; SELECT cod_dip WHERE citta='milano'; 6

7.4, acconto, camera, prenot WHERE dipendenti.cod_dip=prenot.cod_dip AND prenot.acconto>100000 AND dipendenti.eta>25; WHERE cod_dip IN A; SELECT dipendenti.cod_dip, prenot WHERE dipendenti.cod_dip=prenot.cod_dip AND prenot.acconto>100000 AND dipendenti.eta>25;, acconto, camera, prenot WHERE dipendenti.cod_dip=prenot.cod_dip AND codice IN A; 7.5 Per la soluzione non è possibile utilizzare group by ed having perchè non vi sono funzioni di aggregazione nella select principale ovvero non devo estrarre dati riguardanti gruppi di utenti, ma quelli riguardanti singoli utenti. La funzione di aggregazione compare solamente nella condizione sull'acconto dei dipendenti. Si può risolvere tutto utilizzando un'interrogazione nidificata. SELECT AVG(acconto) ; SELECT alberghi.nome, dipendenti.cognome, dipendenti.nome, dipendenti.citta, prenot, alberghi WHERE dipendenti.cod_dip = prenot.cod_dip AND prenot.cod_alb = alberghi.cod_alb AND prenot.acconto>a; 7

7.6 Devo ordinare i risultati in base ai giorni di prenotazione in ordine decrescente, ovvero dal valore più grande al più piccolo e poi limito l'elenco di risultati restituiti, grazie alla clausola LIMIT, ai primi 5. SELECT alberghi.nome, dipendenti.cognome, dipendenti.nome, dipendenti.citta,prenot.giorni, prenot, alberghi WHERE dipendenti.cod_dip = prenot.cod_dip AND prenot.cod_alb = alberghi.cod_alb ORDER BY prenot.giorni DESC LIMIT 5; 7.7 CREAZIONE TABELLA ACCONTI: CREATE TABLE Acconti ( SELECT cod_alb, AVG(acconto) AS media GROUP BY cod_alb ); INTERROGAZIONE: SELECT alberghi.nome, dipendenti.cognome, dipendenti.nome, dipendenti.citta, acconti, prenot, alberghi WHERE dipendenti.cod_dip=prenot.cod_dip AND prenot.cod_alb=acconti.cod_alb AND prenot.cod_alb=alberghi.cod_alb AND prenot.acconto >= acconti.media; 8

7.8 PERIODI MEDI DI SOGGIORNO PER OGNI ALBERGO: SELECT cod_alb, AVG(giorni) AS periodo_medio GROUP BY cod_alb A QUESTO PUNTO POSSIAMO SCRIVERE LA QUERY DESIDERAT SELECT dipendenti.cognome, dipendenti.nome, alberghi.nome as albergo, alberghi.citta as città_albergo, periodo_medio,giorni, prenot, alberghi, (SELECT cod_alb, AVG(giorni) AS periodo_medio GROUP BY cod_alb) AS periodi_medi WHERE dipendenti.cod_dip = prenot.cod_dip AND prenot.cod_alb = alberghi.cod_alb AND alberghi.cod_alb = periodi_medi.cod_alb AND prenot.giorni > periodi_medi.periodo_medio; 9