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

Discussione: Select Sum

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2000
    residenza
    Roma
    Messaggi
    58

    Select Sum

    salve a tutti

    ho una tabella "monete" con un campo "nazione" e un campo "peso"
    vorrei ottenere la somma di tutti valori del campo "peso"

    se faccio una query di questo tipo

    codice:
    SELECT sum(peso) as totale_peso FROM monete
    ho come risultato la somma di tutta la colonna "peso" però senza i valori decimali. Come posso ottenere la somma giusta anche con i decimali?

    Grazie in anticipo a chi mi aiuterà

  2. #2
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    Non mi risulta che sum ignori i decimali.
    Forse i conti tornano pari senza decimali?

    Comunque puoi provare qualcosa del genere:
    SELECT sum(peso*1000)/1000 as totale_peso FROM monete
    "Nei prossimi tre anni col mio governo vogliamo vincere anche il cancro, che colpisce ogni anno 250.000 italiani e riguarda quasi due milioni di nostri concittadini"

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2000
    residenza
    Roma
    Messaggi
    58
    grazie per la risposta ma anche con il codice che mi hai suggerito ho sempre lo stesso risultato cioè la somma senza decimali.

    per esempio ho:
    la prima moneta che ha un peso di 5,98
    la seconda moneta che ha un peso di 9,20

    usando
    codice:
    SELECT sum(peso) as totale_peso FROM monete
    o
    codice:
    SELECT sum(peso*1000)/1000 as totale_peso FROM monete
    mi restituisce 14 come risultato invece di 15,18

    dove può essere l'errore?

    il campo peso è di tipo VARCHAR forse è questo il problema?

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da Hide
    il campo peso è di tipo INT forse è questo il problema?
    io dico di si


    il tipo di campo per 'peso' dev'essere DECIMAL:
    http://dev.mysql.com/doc/refman/5.0/...ric-types.html


    una soluzione alternativa, ma meno performante è questa:
    codice:
    SELECT SUM( ( REPLACE( peso, ",", "." ) * 1000 ) ) / 1000 AS totale_peso FROM monete
    think simple think ringo

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2000
    residenza
    Roma
    Messaggi
    58
    grazie mille in effetti è proprio quello il problema!

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2000
    residenza
    Roma
    Messaggi
    58
    scusa se ne approfitto ma essendo un novizio del php ho parecchie difficoltà.

    dovrei fare una select che faccia una classifica delle monete per nazione mettendole in ordine partendo dalla nazione con piu monete.

    Es.

    NAZIONE N.MONETE
    Italia 34
    Francia 30
    Spagna 24

    che tipo di query devo fare?

    Grazie

  7. #7
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    com'è strutturata la tabella?
    think simple think ringo

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2000
    residenza
    Roma
    Messaggi
    58
    ha 5 campi

    id
    nazione
    peso
    valore
    anno

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2000
    residenza
    Roma
    Messaggi
    58
    up

  10. #10
    Originariamente inviato da Hide
    ha 5 campi

    id
    nazione
    peso
    valore
    anno
    codice:
    SELECT *, COUNT(*) AS tot
    FROM tabella
    GROUP BY nazione
    ORDER BY tot DESC

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.