Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303

    Contare record grouppati a settimana

    Ciao,
    in MySQL ho un db di questo tipo:
    idf nome cognome giorno
    1 Pippo Pluto 2020-01-01
    2 Marco Polo 2020-01-01
    3 tizio Caio 2020-03-03
    4 Marco Aurelio 2020-03-04
    5 Topo Lino 2020-03-07

    Ho bisogno che conti i record di tutta una settimana o meglio seleziona ogni lunedì dalla data e prende tutti i record per 7 giorni e li conta e mi restituisce il dato.
    Sono arrivato alla seguente query ma manca qualcosa:
    "SELECT gg, COUNT(idf) AS totFF, DATE_ADD(gg, INTERVAL 6 DAY) AS ggfine FROM tab WHERE (gg BETWEEN gg AND (DATE_ADD(gg, INTERVAL 6 DAY)) ) AND DAYOFWEEK(gg) = '2' GROUP BY gg ORDER BY totFF"

    Grazie
    Ultima modifica di uboz; 30-03-2020 a 17:45
    Paul

    What do you need today?
    www.uboz.it

  2. #2
    Puoi raggruppare per week() o per yearweek()

  3. #3
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303
    Quote Originariamente inviata da optime Visualizza il messaggio
    Puoi raggruppare per week() o per yearweek()
    SELECT gg, YEAR(gg) AS annog, WEEK(gg) AS settg, COUNT(idf) AS totFF FROM tab GROUP BY annog, settg ORDER BY totFF DESC, gg DESC

    Grazie, però non capisco perchè il primo conto (quello maggiore) non è corretto.
    Paul

    What do you need today?
    www.uboz.it

  4. #4
    non capisco... qual è il primo? qual è quello maggiore? posta un esempio, così si capisce, grazie

  5. #5
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303
    Quote Originariamente inviata da optime Visualizza il messaggio
    non capisco... qual è il primo? qual è quello maggiore? posta un esempio, così si capisce, grazie
    Si scusami.
    Ho ordinato descendente e il primo è la settimana che conta più idf. Mi restituisce 23 ma contandoli a mano sono 32. I conteggi successivi sono tutti corretti invece, provati contando uno per uno.

    Grazie
    Paul

    What do you need today?
    www.uboz.it

  6. #6
    codice:
    SELECT
         YEAR(gg) AS annog, YEARWEEK(gg) AS settg, COUNT(idf) AS totFF 
    FROM 
        tab 
    GROUP BY 
        YEAR(gg) AS annog, YEARWEEK(gg) AS settg
    ORDER BY 
        totFF DESC, gg DESC
    vedi se questa va meglio

  7. #7
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303
    Grazie, non cambia nulla.
    Ho provato a grouppare anche solo per YEARWEEK, ma stessi risultati.
    Paul

    What do you need today?
    www.uboz.it

  8. #8
    non è che da qualche parte ci sono dei campi NULL che non vengono conteggiati?

  9. #9
    Utente di HTML.it L'avatar di uboz
    Registrato dal
    Feb 2002
    residenza
    Milano / Pavia
    Messaggi
    303
    No in quei record no.
    Se eseguo questa query:
    SELECT * FROM tab WHERE gg BETWEEN '2018-06-06' AND '2018-06-12'

    Prendendo le date del primo risultato funziona ma come detto mi da 32 record mentre nel count solo 21.
    Ripeto tutti gli altri conteggi sono perfetti. E' strano che sbagli solo con 1.
    Paul

    What do you need today?
    www.uboz.it

  10. #10
    nella query con GROUP BY non ci sono condizioni WHERE, quindi mi viene da pensare che la query reale sia più complessa. Puoi postarla tutta? Grazie.

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