Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    22

    [SQL] Dubbio sull'uso della SUM

    Salve, sto studiando il linguaggio SQL e vorrei chiedervi dei chiarimenti riguardo questa query.

    "
    QUIZ(CodQuiz, Argomento, Punteggio)
    STUDENTE(Matricola, Nome, Indirizzo, Città)
    RISULTATO TEST(Matricola, CodQuiz, RispostaCorretta)
    Trovare matricola e nome degli studenti di Torino che hanno conseguito il punteggio massimo possibile nei quiz di matematica
    "

    La soluzione proposta nell'esercizio è la seguente (ho marcato in rosso la riga su cui vorrei porre la vostra attenzione):

    SELECT S.Matricola, Nome
    FROM STUDENTE S,RISULTATO_TEST R,QUIZ Q
    WHERE S.Matricola=R.Matricola
    AND Q.CodQuiz=R.CodQuiz
    AND Citta='Torino'
    AND RispostaCorretta='si'
    AND Argomento='matematica'
    GROUP BY S.Matricola,Nome
    HAVING SUM(Punteggio)=(SELECT SUM(Punteggio)
    FROM QUIZ
    WHERE Argomento='matematica');

    Quello che non capisco è: perché "si raggruppa" per S.Matricola invece che per Q.Argomento dato che io calcolo la SUM sull'attributo Q.Punteggio? (tra l'altro se raggruppo solo per S.Matricola non ottengo un ordinamento in base all'attributo Matricola della relazione S? Come faccio a raggruppare per S.Matricola e poi a calcolare SUM(Punteggio) se l'attributo Punteggio si trova nella relazione Q e non in S?)

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da rino95 Visualizza il messaggio
    Quello che non capisco è: perché "si raggruppa" per S.Matricola invece che per Q.Argomento
    A cosa ti servirebbe raggruppare per Q.Argomento ????
    hai gia il filtro che preleva solo "matematica" quindi 1 solo Argomento

    se raggruppi gli argomenti dove c'è solo 1 argomrnto non fai nulla


    Invece di S.Matricole ce ne possono essere molteplici
    quindi ha senso raggruppare per avere di ogniuna la somma dei punteggi ottenuti

    .
    Ultima modifica di nman; 07-05-2017 a 09:04

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    22
    Scusami non sono stato abbastanza chiaro nell'esplicitare il mio dubbio...

    la tabella STUDENTE è fatta così: STUDENTE(Matricola, Nome, Indirizzo, Città)

    la tabella QUIZ è fatta così: QUIZ(CodQuiz, Argomento, Punteggio)

    l'attributo S.Matricola fa riferimento al campo Matricola della tabella STUDENTE; io voglio calcolare un aggregato (la SUM) sull'attributo Punteggio, che non si trova nella tabella STUDENTE. La domanda è: visto che voglio calcolare un aggregato (SUM) su un determinato attributo (Punteggio) che fa parte di una determinata tabella (QUIZ), non si dovrebbe raggruppare secondo un attributo che fa parte di quella tabella (QUIZ)?

  4. #4
    tramite la tabella RISULTATO TEST le altre due vanno in JOIN, quindi puoi tranquillamente raggruppare per Matricola

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Provo a ripetere la stessa cosa di Optime con parole diverse


    DEVI raggruppare per Matricola perchè di ogni matricola vuoi la somma dei punteggi

    quindi:
    - Prendi tutti i record con la stessa matricola e li fondi in uno unico (questo è il raggruppamento)
    - In ogni gruppo fai il Sum del punteggio, Ok, è su un' altra tabella pero ci sono i JOIN

    .

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    22
    Quindi in pratica è come se avessi le due tabelle unite in una in cui in ogni tupla ci sono tutti gli altributi "joinati" che mi interessano, ok pensavo che si potessero calcolare aggregati solo sulle stesse tabelle su cui si fosse già raggruppato per un altro attributo!! Grazie per la pazienza ragazzi!!

  7. #7
    esatto, fa' conto di avere un'unica tabella con le due allineate

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.