Non ho voglia di popolare una base di dati, mi direste se vi sembra ok questa query?
Dato il seguente schema relazionale, che modella i dati di una videoteca:
UTENTE(NumTessera, Nome, Cognome, Città, Età)
NOLEGGIO(NumT, TitoloF, Data, Note)
FILM(Titolo, Genere, Anno, StatoCopia)
Con vincoli di integrità referenziale:
NOLEGGIO.NumT->UTENTE.NumTessera
NOLEGGIO.TitoloF->FILM.Titolo
Scrivere in SQL la query che determina l’età media degli utenti di Bologna che hanno noleggiato almeno un film nel periodo 1/1/2016 al 21/1/2016.
Ho pensato di fare così:
Temo però che ci sia un problema: se due o più utenti diversi ma con la stessa età hanno noleggiato un film in quelle date verranno esclusi dal conteggio e la media risulterà falsata. Se tolgo però il distinct ottengo comunque una media falsata dalla possibilità che uno stesso utente abbia noleggiato più volte un film nel periodo in esame.codice:select avg(distinct eta) from utente join noleggio on numtessera=numt where data>='1/1/2016' and data<='21/1/2016' and citta='Bologna'
E' così?
Mi sembrava troppo bello aver elaborato questa query in 5 minuti...
Edit: forse potrei aver risolto così.
select avg(eta)
from utente
where numtessera= ANY (select numt from noleggio where citta='bologna' and data=blabla);


Rispondi quotando