Anteprima
Vedrai una selezione di 1 pagina su 5
Esercizi query annidate Pag. 1
1 su 5
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Esercizio 4

Cliente (ID_CLIENTE, nome, cognome) /* Questa tabella memorizza i dati dei clienti che frequentano il centro sportivo.

ID_CLIENTE è la chiave primaria. */

Palestra (ID_PALESTRA, nome, indirizzo) /* Questa tabella contiene informazioni sull’elenco delle palestre appartenenti alla

catena. ID_PALESTRA è la chiave primaria della tabella. /*

Ingresso(ID_cliente, ID_palestra, data) /* Questa tabella memorizza gli ingressi degli utenti nelle palestre. ID_cliente e

ID_palestra sono delle foreign key che fanno riferimento alle tabelle rispettivamente Cliente e Palestra. Questa tabella non ha

un attributo singolo che svolge il ruolo di chiave primaria. Per vostra semplicità assumente che un utente vada in palestra non

più di una volta al giorno. */

/*Assunzioni*/

un utente va in palestra non più di una volta al giorno

/*visualizzo nella query*/

l'id_cliente

l’id_palestra

il valore numerico della percentuale.

select b.id_cliente, b.id_palestra, b.ing / a.tot as perc

from( select id_cliente; count(*) as tot

from ingresso

group by id_cliente

)as a,( select id_cliente; id_palestra count(*) as ing

from ingresso

group by id_cliente,id_palestra

)as b

where a.id_cliente=b.id_cliente

la query utilizza due subquery nel from che calcolano separamente gli inglessi effettuati dal cliente su ogni singola tabeella e

l’altra invece mi calcola il numero totale degli ingressi di ciascun cliente

Esercizio 5

Elettrodomestico (NUMERO_SERIALE, descrizione, prezzo, ID_categoria) /* Questa tabella memorizza i dati degli

elettrodomestici venduti. NUMERO_SERIALE è la chiave primaria, il numero seriale di un elettrodomestico è come la targa di

un’automobile. Prezzo è il prezzo di vendita e ID_categoria è una foreign key che rimanda alla tabella categoria (vedi tabella

successiva). */

Categoria (ID_categoria, descrizione) /* Memorizza informazioni sulle categorie in cui sono suddivisi gli elettrodomestici. Ogni

elettrodomestico appartiene ad una e una sola categoria. */

Manutenzione(ID_MANUTENZIONE, Numero_Seriale, data, costo) /* Ogni recordi questa tabella rappresenta un intervento di

manutenzione effettuato su un eletrodomestico. ID_MANUTENZIONE è la chiave primaria della tabella, Numero_Seriale è una

foreign key che fa riferimento alla tabella elettrodomestico, data è la data dell’intervento e costo rappresenta la spesa

effettuata dall’azienda per svolgere la manutenzione. Un elettrodomestico può aver subito zero, una o più manutenzioni.

tot soldi spesi

tot soldi incassati

rap 1-2

rap> 0.05

order by rap desc

select id_categorie, b.tot_speso/a.tot_incasso as rap

from( select id_categoria, sum(prezzo) as tot_incasso

from elettrodomestico

group by id_categoria

) as a,(

selecte. id_categoria, sum(m,costo) as tot_speso

from elettrodomestico as e , manutenzione as m

where m.numero_seriale=e.numero_seriale

group by id_categoria

)as b

where b.id_categoria=a.id_categoria and rap > 0.05

order by rap desc

Esercizio 6

Viaggio (ID_VIAGGIO, partenza, destinazione, data)

Treno (ID_TRENO, nome, costo_orario)

Container (ID_CONTAINER, dimensioni, peso)

Commessa (ID_COMMESSA, ID_container, ID_viaggio, importo)

per ogni viaggio

1- rapporto tra soldi incassati tramite la fatturizzazione dei conteiner trasportati/costo sostenuto per i treni utilizzati

2-mostro solo i dati che hanno un rapporto >2

3-order by rapporto desc

select a.id_viaggio, a.incasso/b.fatt as rap

from( select id_viaggio, sum(importo) as incasso

from commessa

group by id_viaggio

) as a,(

select t.id_viaggio, sum(costo_orario*ore_impiegate) as fatt

from uso_treno as us, treno as t

where us.id_treno=t.id_treno

group by id_viaggio

) as b

where a.id_viaggio=b.id_viaggio and rap>2

order by rap desc

Questo esercizio ci chiede di andare a calcolare per ogni ***** , il totale oppure il rapporto ecc, tuttavia per per andare a calcolarle non si

può andare subito a collegare le informazioni delle diverse tabelle in quanto hanno diversa granularità ( ossia l'insieme delle chiavi

associate ad una unità di informazione ) quindi per collegare le informazioni ho bisogno di uniformare la granularità ricorrendo alle query

annidate che oltre a operare su tabelle esistenti mi permettono di lavorare a partire dai risultati di altre sotto-query come se fossero

tabelle esistenti . In alternativa avremmo potuto usare anche la materializzazione e le viste.

/*Alternative*/

In alternativa avremmo potuto utilizzare la materializzazione (CREATE TABLE nome_tabella1 query;...)

Vantaggi

-​ può migliorare le prestazioni nel caso di interrogazioni frequenti su dati stabili,

Dettagli
Publisher
A.A. 2024-2025
5 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ibty_05 di informazioni apprese con la frequenza delle lezioni di Basi di dati e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Milano - Bicocca o del prof Cesarini Mirko.