Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376

    calcolo percentuale con Mysql

    Ciao amici!
    con il classico codice
    codice:
    $query = mysql_query("
    SELECT Count(ID) As Totale FROM tabella WHERE Anno Between '2011-01-01' AND '2011-12-31'
    UNION
    SELECT Count(ID) FROM tabella WHERE Anno Between '2010-01-01' AND '2010-12-31'
    UNION
    SELECT Count(ID) FROM tabella WHERE Anno Between '2009-01-01' AND '2009-12-31'
    ");
    
    while ($riga = mysql_fetch_array($query)) {
       echo $riga['Totale'];
    }
    ottenego i seguenti risultati

    totale
    450
    602
    363

    Come faccio a calcolare la differenza percentuale tra un valore e il valore dell'anno prima? cioè, l'operazione per avere la differenza so come si fa ma non riesco ad accedere al singolo valore poichè li ho tutti in $riga['Totale'].

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Prova questo. Addattandolo ovviamente.

    Codice PHP:
    <?php 
      
    //----------------- Connexion à la base de données
     
    include("config.inc");
      
    $link mysql_connect(MYSQL_SERVER_NAMEMYSQL_USER_NAMEMYSQL_USER_PASSWORD) or die ("Impossible de se connecter à mySQL"); 
      
    mysql_select_db (DATABASE_NAME) or die ("Impossible d'accéder à la base de données");
     
      
    $query "SELECT YEAR( `datecr` ) AS mio_anno, count( iddoc ) AS totale "
          
    ."FROM `sit_doc` "
          
    ."GROUP BY mio_anno "
          
    ."ORDER BY mio_anno ";
      
    $result  mysql_query($query) or die(mysql_error());
     
     
    $precedente 0;
     while (list(
    $anno,$totale) = mysql_fetch_array($result)) {
       
    $crescita 0;
       if (
    $precedente != 0) {
         
    $crescita = (($totale $precedente) / $precedente) * 100;
      } 
    // if ($precedente != 0)
       
    print "Anno : $anno -> Totale : $totale -> Crescita : ".number_format($crescita,2)." %<br>";
      
    $precedente $totale;
     } 
    // while ($array = mysql_fetch_array($result))
    ?>
    Con la mia tabella dà.

    Codice PHP:
    Anno 2008 -> Tot.: 37 -> Diff. : 0.00 %
    Anno 2009 -> Tot.: 11 -> Diff. : -70.27 %
    Anno 2010 -> Tot.: 36 -> Diff. : 227.27 %
    Anno 2011 -> Tot.: 65 -> Diff. : 80.56 %
    Anno 2012 -> Tot.: 11 -> Diff. : -83.08 %
    Anno 2013 -> Tot.: -> Diff. : -90.91 
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Salve ragazzi ho un problema:
    come faccio a calcolare la percentuale di presenza di record in modo dinamico?
    Mi spiego ho una tabella con
    ATLETI
    campo 1 campo2
    Giorgio 3
    Giorgio 2
    Giorgio 2
    Giorgio 1
    Antonio 4
    Antonio 2


    Matematicamente sarebbe totale Giorgio 3 (2 volte)/totale Giorgio (volte4)/100=50%
    Campo numero 1 25%
    numero 3 25%

    Come faccio ad ottenerlo con una query ?
    Ho provato con delle query e sottoquery con Count ma nulla vi prego aiutatemiiii
    Ultima modifica di fagianco; 17-11-2014 a 22:46

  4. #4
    fagianco scusa me la rispieghi?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,361
    Prova cosi. Non testato.

    codice HTML:
    select t1.campo1, t1.campo2, 
    count(*) / (select count(*) from tabella t2 where t2.campo1 = t1.campo1)
    from tabella t1
    group by t1.campo1, t1.campo2
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,448
    Una discussione un problema.

    Tra l'altro è argomento Database, non PHP.
    Chiudo.

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.