Dubbio su questa query

di il
3 risposte

Dubbio su questa query

Salve sto facendo questo esercizio , anche se ho delle difficoltà nello svolgimento , credo di aver fatto qualche errore nella mia query qualcuno potrebbe aiutarmi?? grazie in antciipo

Il sistema informatico dell' assistenza sanitaria lombarda utilizza un database per gestire i defibrillatori sparsi sul territorio. Nel database sono presenti le seguenti relazioni :

Defibrillatori(ID, DataUltimaManutenzione, Collocazione)

DatiUtilizzo(IDDef, Data, Ora, ECG)


es: Visualizzare una tabella contenente per ogni giorno in cui è stato utilizzato almeno un defibrillatore, il numero di defibrillatori utilizzati
select distinct data , count(iddef) as  n* def utilizzati
from DatiUtilizzo
having count(iddef) >1
group by data

3 Risposte

  • Re: Dubbio su questa query

    Ciao, credo che l'errore sia in realtà solo sintattico. In particolare la stringa dopo "as" deve essere contenuta fra apici, e la clausola HAVING va messa dopo la GROUP BY:
    select distinct data , count(iddef) as 'n* def utilizzati'
    from DatiUtilizzo
    group by data
    having count(iddef) >1
  • Re: Dubbio su questa query

    Quindi è giusta! (a parte l'errore sintattico!) grazie mille , il mio dubbio era il mettere lo stesso count sia nell'having che nel select , non sapevo se si potesse fare!
  • Re: Dubbio su questa query

    Mettere il count sia nell'having che nella select è "legale". L'unica cosa è che quella distinct è inutile, perché raggruppi su "data", quindi tutte le date uguali vengono collassate sulla stessa riga.
    Inoltre l'esercizio richiede di visualizzare tutti i giorni in cui è stato usato almeno un defibrillatore, per cui dovresti avere "HAVING COUNT(iddef) >= 1", che si può tranquillamente eliminare: infatti per avere COUNT(iddef) < 1 bisognerebbe avere una data in cui non è stato usato nessun defibrillatore, ma se non è stato usato nessun defibrill. allora non c'è nessuna riga nella tabella DatiUtilizzo (iddef è chiave esterna, quindi non può essere null)
Devi accedere o registrarti per scrivere nel forum
3 risposte