2010-06-11 11 views
6

ich tue:mysql durch Aussagen Nullwerte für die Gruppe zeigt

select sum(clicks), 
      date 
    from stats 
group by date 

... aber wenn die Summe aus irgendeinem Zeitpunkt null ist, wird die gesamte Zeile wird verworfen, ich will sehen: | null | some_date |, wie zu tun?

+0

Es würde helfen, die vollständige Abfrage in Frage zu sehen – Thomas

Antwort

2

Es würde helfen, die vollständige Abfrage in Frage zu sehen. Für jeden Datumswert, der in stats existiert, sollten Sie entweder NULL für die Summe oder einen Ganzzahlwert erhalten. Wenn Sie nach [Datum] gruppieren und ein bestimmter Datumswert nicht existiert, wird er offensichtlich nicht angezeigt. Zum Beispiel, betrachten Sie den folgenden Test:

Create Table Test (Clicks int null, [Date] datetime null) 
Insert Test(Clicks,[Date]) Values(1,'2010-06-06') 
Insert Test(Clicks,[Date]) Values(2,Null) 
Insert Test(Clicks,[Date]) Values(3,'2010-06-06') 
Insert Test(Clicks,[Date]) Values(4,'2010-06-07') 
Insert Test(Clicks,[Date]) Values(4,Null) 
Insert Test(Clicks,[Date]) Values(4,'2010-06-07') 
Insert Test(Clicks,[Date]) Values(Null,'2010-06-08') 

Select T.[Date], Sum(Clicks) 
From Test T 
Group By T.[Date] 

Die Ergebnisse sollten wie folgt aussehen:

NULL      6 
2010-06-06 00:00:00.000 4 
2010-06-07 00:00:00.000 8 
2010-06-08 00:00:00.000 NULL 

Hinweis ich noch eine Reihe auch erhalten, wenn Sum(Clicks) null ist. Ist es, dass Sie diese Informationen zu etwas anderem auf der Sum(Clicks) Berechnung verbinden?

0

Da Sie eine Gruppierung nach Datum durchführen, nehme ich an, dass Sie mehr als einen Datensatz pro Datum haben. Ich würde denken, Sie müssten ifnull auf die ursprünglichen Daten, oder Sie werden einige verlieren.

Wenn zum Beispiel 10. Juni zählt von 10 hatte, 20, 30 und null, dann würden Sie null erhalten statt 60.

ich denke, das dieses Problem verhindern:

select ifnull(sum(ifnull(clicks,0)), 'null'), date from stats group by date;