[Db] incartato col count

Domenico L. domenico.lorusso a pleiade.it
Lun 18 Dic 2006 14:26:40 CET


Marcello Vezzelli ha scritto:
> Cristiano Verondini ha scritto:
>   
>>> E' possibile sapere quante pere ho raccolto diviso per mese?
>>>       
>> SELECT
>>    COUNT(frutto) AS C,
>>    DATE_FORMAT(data,'%Y %m') AS DT,
>>    frutto
>>
>> FROM Tabella
>>
>> GROUP BY DT, frutto
>> ORDER BY DT, C DESC
>>
>>     
>
> Questa è al momento lo stato dell'arte della query del raccoglitore di
> frutta.
>
> Ora... altra complicazione...
> Il totale dei frutti raccolti ogni mese.
>
> SELECT DATE_FORMAT( data, '%Y %m' ) AS DT, COUNT( * ) AS TOT
> FROM frutta
> GROUP BY DT
> ORDER BY DT
>
> Volendo unirle...
>
> SELECT * FROM
> (
>     SELECT COUNT( frutto) AS C,
>     DATE_FORMAT(data,'%Y %m') AS DT,
>     frutto
>     FROM frutta
>     GROUP BY DT, frutto
>     ORDER BY DT, C DESC
> )  AS T1
> JOIN
> (
>     SELECT DATE_FORMAT( data, '%Y %m' ) AS DT,
>     COUNT( * ) AS TOT
>     FROM frutta
>     GROUP BY DT
>     ORDER BY DT
> ) AS T2
> ON T1.DT=T2.DT
> ORDER BY T1.DT,T1.C
>
>   
A parte che non so se sia possibile usare DT come elemento del group by 
dipende dai dbms

cmq la seconda ottiene le occorrenze raggruppate per mese la prima le 
occorrenze distinte raggruppate per mese e per frutto
mettendole insieme ottieni una ripetizione...

Credo tu voglia usare una funzione come la rollup e visto che usi mysql 
(che versione?)

cmq
http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html

    SELECT COUNT( frutto) AS C, # o COUNT( *) non è la stessa cosa!
    DATE_FORMAT(data,'%Y %m') AS DT,
    frutto
    FROM frutta
    GROUP BY DT, frutto
	with rollup


Credo perché non ho mai usato mysql su queste cose ma dovrebbe 
funzionare, controlla da che versione esiste

-- 
Domenico L.                             icq: 645 44 861

per stupire mezz'ora basta un libro di storia,
io cercai di imparare la Treccani a memoria... [F.d.A.]



Maggiori informazioni sulla lista Db