Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: [MySql] Select Sum

  1. #1

    [MySql] Select Sum

    Buon giorno a tutti.
    Scusate la richiesta, ma ho urgente bisogno del vostro aiuto.
    Ho una tabella con 9 campi da A01 a A09.
    Per ogni campo posso ricevere punteggio da 1 a 6.

    Potrei avere una situazione del genere:
    A01 | A02 | A03 | A04 | A05 | A06 | A07 | A08 | A09
    1 | 4 | 5 | 2 | 3 | 5 | 6 | 6 | 3
    2 | 3 | 1 | 5 | 4 | 6 | 2 | 5 | 1


    Risultati:
    Quanti hanno dato punteggio 1-2 = 6
    Quanti hanno dato punteggio 3-4 = 5
    Quanti hanno dato punteggio 5-6 = 7

    Come faccio ad ottenere un cosa del genere?
    Grazie mille.

  2. #2
    ho fatto in questo modo, ma solo per il campo A01:
    codice:
    SELECT 'SUM 1-2' A01, COUNT(1)
    FROM TB_PRO
    WHERE A01 IN (1,2)
    UNION ALL
    SELECT 'SUM 3-4' A01, COUNT(1)
    FROM TB_PRO
    WHERE A01 IN (3,4)
    UNION ALL
    SELECT 'SUM 5-6' A01, COUNT(1)
    FROM TB_PRO
    WHERE A01 IN (5,6)
    Ed ottengo quello che voglio.

    Ma per tutti i campi?Come faccio in un unica select?
    Grazie mille.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    et voilà

    codice:
    select
    sum(case when tabella.a01 in (1,2) then 1 else 0 end +
     case when tabella.a02 in (1,2) then 1 else 0 end +
     case when tabella.a03 in (1,2) then 1 else 0 end +
     case when tabella.a04 in (1,2) then 1 else 0 end +
     case when tabella.a05 in (1,2) then 1 else 0 end +
     case when tabella.a06 in (1,2) then 1 else 0 end +
     case when tabella.a07 in (1,2) then 1 else 0 end +
     case when tabella.a08 in (1,2) then 1 else 0 end +
     case when tabella.a09 in (1,2) then 1 else 0 end) as Punti12,
    sum(case when tabella.a01 in (3,4) then 1 else 0 end +
     case when tabella.a02 in (3,4) then 1 else 0 end +
     case when tabella.a03 in (3,4) then 1 else 0 end +
     case when tabella.a04 in (3,4) then 1 else 0 end +
     case when tabella.a05 in (3,4) then 1 else 0 end +
     case when tabella.a06 in (3,4) then 1 else 0 end +
     case when tabella.a07 in (3,4) then 1 else 0 end +
     case when tabella.a08 in (3,4) then 1 else 0 end +
     case when tabella.a09 in (3,4) then 1 else 0 end) as Punti34,
    sum(case when tabella.a01 in (5,6) then 1 else 0 end +
     case when tabella.a02 in (5,6) then 1 else 0 end +
     case when tabella.a03 in (5,6) then 1 else 0 end +
     case when tabella.a04 in (5,6) then 1 else 0 end +
     case when tabella.a05 in (5,6) then 1 else 0 end +
     case when tabella.a06 in (5,6) then 1 else 0 end +
     case when tabella.a07 in (5,6) then 1 else 0 end +
     case when tabella.a08 in (5,6) then 1 else 0 end +
     case when tabella.a09 in (5,6) then 1 else 0 end) as Punti56
    FROM tabella
    ciao
    Ultima modifica di 123delphi321; 11-06-2014 a 14:10

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    .

  5. #5
    Quote Originariamente inviata da ANTAGONIA Visualizza il messaggio
    ho fatto in questo modo, ma solo per il campo A01:
    codice:
    SELECT 'SUM 1-2' ".$value.", COUNT(1)
    FROM TB_PRO
    WHERE A01 IN (1,2)
    UNION ALL
    SELECT 'SUM 3-4' ".$value.", COUNT(1)
    FROM TB_PRO
    WHERE A01 IN (3,4)
    UNION ALL
    SELECT 'SUM 5-6' ".$value.", COUNT(1)
    FROM TB_PRO
    WHERE A01 IN (5,6)
    Ed ottengo quello che voglio.

    Ma per tutti i campi?Come faccio in un unica select?
    Grazie mille.
    Buon giorno, ho fatto in questo modo, la dovevo eseguire dentro un ciclo foreach.E funziona.
    Grazie mille.
    Buona giornata.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    certo, se funziona...funziona!

    ma, in questo modo, per ottenere il risultato quante volte esegui la query (tra l altro dentro un ciclo)?

  7. #7
    ho utilizzato un ciclo perché mi sono creato un array con tutti i campi che mi servono.
    Poi ho assegnato a $value il nome del campo A01 oppure A02 ecc ecc.
    Il ciclo mi serve per creare una tabella in html per visualizzare i risultati:
    Nome campo -> risultato

    Ho un altra domanda, come posso oltre al risultato della somma, avere anche un risultato in percentuale?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,326
    percentuale di cosa?

  9. #9
    forse cosi va bene?
    codice:
    SELECT '1-2' A01, COUNT(1) as A1 ,  (COUNT(1) * 100) / (select count(*) from TB_PRO) as percentuale
    FROM TB_PRO WHERE A01 IN(1,2)
    UNION ALL
    SELECT '3-4' A01, COUNT(1) as A1 ,  (COUNT(1) * 100) / (select count(*) from TB_PRO) as percentuale
    FROM TB_PRO
    
    WHERE A01 IN (3,4)
    UNION ALL
    SELECT '5-6' A01, COUNT(1) as A1 ,  (COUNT(1) * 100) / (select count(*) from TB_PRO) as percentuale
    FROM TB_PRO
    
    WHERE A01 IN (5,6)
    facendo in questo modo ho la percentuale con i decimali esempio: 45,7627.
    Domanda: come posso arrotondare a 45 oppure in questo caso essendo più vicino a 46?
    Grazie ancora.

  10. #10
    in php ho utilizzato la funzione
    Codice PHP:
    round($arr[$i]['percentuale'],1); 
    cosi da avere da 45,7627->45,8
    ma se volessi già estrapolarlo nel modo di cui sopra?
    grazie ancora.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.