Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [MySQL] problema con AVG()

    Ciao,

    ho un problema con la funzione AVG() in MySQL. In pratica vado ad eseguire la media su una serie di valori. Oltre alla media eseguo anche le funzioni MIN() e MAX() sulla stesas serie di valori. I valori sono salvati in un campo definito come TEXT in una tabella TEMPORARY.

    Di fatto però capita che alcuni valori medi cadano al di fuori dei valori massimi e minimi. Noto che spesso ciò accade quando i valori sui quali eseguo le funzioni sono anche negativi. Di qui il dubbio sulla conversione fatta da mysql da text a numerico.

    L'unico riferimento trovato sulla documentazione ufficale è questo
    The SUM() and AVG() aggregate functions do not work with temporal values. (They convert the values to numbers, which loses the part after the first non-numeric character.) To work around this problem, you can convert to numeric units, perform the aggregate operation, and convert back to a temporal value.
    E' attinente al mio caso? Se sì qualcuno mi può spiegare qual'è il problema?

    Grazie per gli aiuti
    RiKkArDo on IRCnet

  2. #2
    la parte che quoti dice che SUM e AVG non funzionano con i valori temporali, cioe' date/time & brothers. in pratica dovresti trasformare il valore temporale in numero e poi ripristinarlo come valore temporale.

    Per il problema della media.. perche usi un campo TEXT nella temp e non un numerico?.... nulla toglie, credo, al problema tuo che deve essere pero' analizzato con i dati alla mano. fai un esempio di valori che hai e della media falsa che ottieni, il tipo di campo e altre info...

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

  3. #3
    Originariamente inviato da piero.mac
    la parte che quoti dice che SUM e AVG non funzionano con i valori temporali, cioe' date/time & brothers. in pratica dovresti trasformare il valore temporale in numero e poi ripristinarlo come valore temporale.
    grazie per la corretta traduzione
    Originariamente inviato da piero.mac
    Per il problema della media.. perche usi un campo TEXT nella temp e non un numerico?
    questo perchè io prendo i valori dai quali poi calcolare la media, la deviazione standard, il minimo e il massimo da un campo di nome "risultato" che è di tipo text in quanto vi possono essere sia risultati intesi come numeri sia stringhe. Per questo motivo è stato scelto TEXT nel campo originario ed io, forse senza ragionarci su un po', lo ripreso nella tabella temp.
    Originariamente inviato da piero.mac
    .... nulla toglie, credo, al problema tuo che deve essere pero' analizzato con i dati alla mano. fai un esempio di valori che hai e della media falsa che ottieni, il tipo di campo e altre info...
    Dopo una prova più approfondita e scrupolosa ho notato che l'errore non è nel calcolo della media (AVG) ma nel calcolo del minimo (MIN), del massimo (MAX) e forse della deviazione standard (STD)

    Riporto la serie di valori (prelevati da un campo TEXT) che mi danno problemi:

    valori: -15-20-6-8-14-11-17-4-2-23-24-22-28-14-31-18-14-23-26-32-29-17-23-13
    -23-27-13-12-16-23-32-22-11-13-20-22-27-16-8-22-24-23-19-24-21-23-12

    in excel ottengo i seguenti valori:
    MIN -32 MAX -4 AVG -19,3191 STD 6,86

    mentre mysql mi torna:
    MIN -11 MAX -8 AVG -19,32 STD 6,79
    RiKkArDo on IRCnet

  4. #4
    up
    RiKkArDo on IRCnet

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.