Query sql Esercizio esame #2

di il
3 risposte

Query sql Esercizio esame #2

CIao a tutti

Dato il seguente schema:

docente(codice, nome, cognome)
aula(nome, dipartimento, numposti)
prenotazione(data, nomeaula, codDocente)

Scrivere la query che restituisca i nomi delle aule prenotate più della media (di tutte le altre aule) nel periodo tra il 1/1/2013 e il 31/12/2013

Io ho abbozzato una query, ma è incompleta e vorrei una mano per completarla.
Select nomeaula
from prenotazione
group by nomeaula
having AVG( COSA?) > all

(select AVG(COSA?)
from prenotazione
where

Mi risulta difficile capire come ottenere la media delle prenotazioni, ma anche semplicemente contarle.
Da quale attributo ci arrivo?
Mi aiutereste a completare la query qualora fosse parzialmente impostata decentemente?
GRAZIE

3 Risposte

  • Re: Query sql Esercizio esame #2

    Mi sembri un pochino confuso
    AVG fa la media di un campo.
    Potresi ad esempio fare qualcosa del genere
    
    select * from documenti where imponibile>(
    select avg(imponibile) from documenti where anno=2017
    ) and anno=2017
    per ottenere l'elenco dei documenti che hanno un imponibile (nel 2017) > della media degli imponibili (del 2017 sempre) (cosa che non ha nulla a che fare con quanto ti viene chiesto)

    Contare invece si fa col COUNT.
  • Re: Query sql Esercizio esame #2

    
    select nomeaula from prenotazione where
    (data>='2013-01-01') and (data<='2013-12-31')
    group by nomeaula
    having count(*)>
    (select count(*)/count(distinct(nomeaula))  from prenotazione where
    (data>='2013-01-01') and (data<='2013-12-31'))
    
    Normalmente avrei usato year(data)=2013, ma può dare problemi con vecchie versioni dell'ottimizzatore
  • Re: Query sql Esercizio esame #2

    Grazie mille
Devi accedere o registrarti per scrivere nel forum
3 risposte