Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    12

    Selezioni raggruppate per orario con MySql

    Ciao a tutti,

    il mio problema è il seguente, data una tabella composta da 2 sole colonne totale e data_ora, poter estrarre la somma dei totali raggruppati per intervalli temporali es. 1 ora.

    Es. nella tabella ho 6 righe, ciascuna con il campo totale a 5 (per semplificare) e con il campo data ora impostato rispettivamente a: 2008/07/08 12:23:34, 2008/07/08 12:35:10, 2008/07/08 12:59:57, 2008/07/08 13:21:41, 2008/07/08 15:10:12, 2008/07/08 16:45:04, vorre poter avere il seguente risultato:
    ...
    ore 12 -> 15
    ore 13 -> 5
    ore 14 -> 0
    ore 15 -> 5
    ore 16 -> 5
    ...

    ovviamente per tutte le 24 ore, o per la quantità di in tervalli stabiliti.

    E' possibile fare tutto ciò con una sola query, o devo fare tante query quanti sono gli intervalli di raggruppamento che voglio ottenere ?

    Grazi Mille

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select date_format(campo_data,"%H") as ora ,count(date_format(campo_data,"%H")) as quanti 
    from tabella
    group by date_format(campo_data,"%H")
    Se vuoi visualizzare anche le ore per le quali non ci sono corrispondenze la query è un pò diversa.

  3. #3
    si puo' fare, ma se una o piu' ore tra le 24 mancassero le dovrai gestire tu con il php.

    codice:
    SELECT 
    date_format(data_ora, '%H') as ora, 
    sum(totale) as tot
    from tabella
    group by ora
    order by ora

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

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da piero.mac
    si puo' fare, ma se una o piu' ore tra le 24 mancassero le dovrai gestire tu con il php.
    Ciao Piero.
    Magari si potrebbe aggiungere una tabella con 24 record, uno per ciascuna ora e fare un join tra le due tabelle.

  5. #5
    Originariamente inviato da nicola75ss
    Ciao Piero.
    Magari si potrebbe aggiungere una tabella con 24 record, uno per ciascuna ora e fare un join tra le due tabelle.
    puoi fare come vuoi..... diciamo che dipende dal suo progetto.

    ma guarda pero' che chiedeva di sommare i totali e non di contare il numero dei record.... e poi perche' ripeti la funzione date_format() nel group by ????

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

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Il date_format mi è scappato, sono un pò assonnato. Meglio che vada a dormire.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    12
    Grazie Mille per l'aiuto, era esattamente ciò di cui avevo bisogno .


    Alla prossima

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.