[Db] subquery e date

Marcello Vezzelli marcello a vezz.it
Mer 30 Maggio 2007 13:46:30 CEST


Marcello Vezzelli ha scritto:
> Domenico L. ha scritto:
>> Marcello Vezzelli ha scritto:
>>> Domenico L. ha scritto:
>>>
>>> Si scusami è che quando ottengo quello che vorrei, mi viene sempre 
>>> da chiedermi "e se volessi anche..." e non è detto che questo 
>>> procedimento sia logico.
>>> Tra l'altro questi "requisiti" sono fini a se stessi, è proprio una 
>>> mia curiosità.
>>>
>>> Immaginiamo di avere la tabella di cui prima, e di voler sapere:
>>> - quanti ticket aperti in un tal giorno
>>> - quanti ticket chiusi in un tal giorno
>>> - quanti ticket aperti e chiusi nello stesso giorno

Penso di esserci arrivato:

select SUM(IF(c1.stato=1,1,0)) as assegnati,
SUM(IF(c2.stato=2,1,0)) as chiusi,
SUM(IF(c2.stato=2 AND date(c1.data)=date(c2.data_chiuso),1,0)) as asschiusi
from
codici as c1
left join
codici as c2
on (c1.id=c2.id)
where c1.stato=1 or c2.stato=2
group by date(c1.data)

Autojoin su codici, imponendo stato=1 per c1 OPPURE stato=2 per c2.
Da c1 conto quelli con stato 1, da c2 conto quelli con stato 2, poi 
controllo se c1.data=c2.data_chiuso e conto quelli chiusi nello stesso 
giorno di apertura.

La media mi sa che va calcolata con una query separata, perché è diverso 
il raggruppamento.

select date(data_chiuso),floor(AVG(data_chiuso-data)) from codici
where stato=2
group by date(data_chiuso)

Una roba così.

Grazie delle dritte!

Ciao
Marcello




Maggiori informazioni sulla lista Db