Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896

    [SQL] uso particolare di count

    Ciao a tutti!

    scusate il titolo ma proprio nn sapevo che mettere

    io questa query (l'ho semplificata per non creare confusione)

    SELECT ATLcog , COUNT( ENTidr ) AS ENTtot , ENTddi
    FROM `ENT`
    INNER JOIN ATL ON ENTatl = ATLidr
    WHERE DATE_FORMAT( ENTddi, '%Y%m%d' )
    BETWEEN DATE_FORMAT( '2008-05-01', '%Y%m%d' )
    AND DATE_FORMAT( '2008-05-01' + INTERVAL 31
    DAY , '%Y%m%d' )
    GROUP BY ATLidr
    ORDER BY ATLidr, ENTtot , ENTddi

    questa query mi serve per estrarre il numero di entrate di un utente ( ATLcog )
    il mio problema è quando ho 2 entrate nella stessa data ( campo data : ENTddi )

    mettendo GROUP BY ATLidr , ENTddi
    ogni riga è diversa dall'altra e quindi non ne vengo fuori
    qualche suggerimento?
    nella funzione COUNT potrei mettere una qualche condizione(mah...)??

  2. #2
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Se ne imparano sempre di nuove. TRE date_format in una where li dovevo ancora vedere.

    A parte questo, spiegati meglio: cosa c'è nelle tabelle e cosa ti serve ottenere?

  4. #4
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    Se ne imparano sempre di nuove. TRE date_format in una where li dovevo ancora vedere.
    se è sbagliato, dimmelo... questa è una soluzione che mi stata suggerita sempre dal forum e vedo che funzia perfettamente e serve (come sicuramente avrai già capito) a prendere un range di date....


    A parte questo, spiegati meglio: cosa c'è nelle tabelle e cosa ti serve ottenere?
    provo a fare un esempio pratico...

    ATLcog -- ENTtot
    ROSSI -- 4
    VERDI -- 5
    BIANCHI -- 11

    questo è il risultato della query che ti ho postato ,ad esclusione del campo ENTddi (data) che per ora lascio da parte.
    Come puoi vedere mi da il numero di entrare per ogni utente compresso nel range della data specificata (avendo messo GROUP BY ATLidr) e fin qui tutto ok... il mio problema è che se l'utente rossi entra due volte lo stesso giorno lui (giustamente ) conta 2 entrate invece avrei bisogno che contasse 1 (al massimo 1 entrata al giorno).

    quindi chiedevo se è possibile mettere un if all'interno del COUNT o cas'altro...
    se non mi sono ancora spiegato dimmelo! grazie...

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Prova così

    select ATLidr, ATLcog, COUNT(ENTidr) FROM
    (select distinct ATLidr, ATLcog, ENTidr, ENTddi
    FROM `ENT`
    INNER JOIN ATL ON ENTatl = ATLidr
    WHERE ENTddi BETWEEN '2008-05-01' AND ('2008-05-01' + INTERVAL 31 DAY)) as tab1
    group by ATLidr, ATLcog

  6. #6
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    fin che postavi ho provato cosi e sembra fuzioni...

    SELECT ATLcog , COUNT( distinct ( ENTddi) ) AS ENTtot , ENTddi
    FROM `ENT`
    INNER JOIN ATL ON ENTatl = ATLidr
    WHERE DATE_FORMAT( ENTddi, '%Y%m%d' )
    BETWEEN DATE_FORMAT( '2008-05-01', '%Y%m%d' )
    AND DATE_FORMAT( '2008-05-01' + INTERVAL 31
    DAY , '%Y%m%d' )
    GROUP BY ATLidr
    ORDER BY ATLidr, ENTtot , ENTddi

    che dici? può andare concettualmente? ora provo subito anche la tua... grazie...

  7. #7
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    no, purtroppo la tua mi restituisce lo stesso risultato della prima versione... provo a tenere buona la versione

    SELECT ATLcog , COUNT( distinct ( ENTddi) ) AS ENTtot , ENTddi
    FROM `ENT`
    INNER JOIN ATL ON ENTatl = ATLidr
    WHERE DATE_FORMAT( ENTddi, '%Y%m%d' )
    BETWEEN DATE_FORMAT( '2008-05-01', '%Y%m%d' )
    AND DATE_FORMAT( '2008-05-01' + INTERVAL 31
    DAY , '%Y%m%d' )
    GROUP BY ATLidr
    ORDER BY ATLidr, ENTtot , ENTddi

    GRAZIE!!!

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    ma che razza di campo è quell'ENTddi?

  9. #9
    Utente di HTML.it L'avatar di kodode
    Registrato dal
    Sep 2002
    Messaggi
    1,896
    sopra l'avevo indicato... è una data , la data di entrata dell'utente. Quella che non volevo fosse doppia.
    Ricordi? se uno entra due volte nello stesso giorno, voglio che conti uno e non due. Quindi contando le date e mettendo un distinct ( ENTddi) mi da il risultato corretto

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.