mysql показывает нулевые значения для операторов group by - PullRequest
6 голосов
/ 11 июня 2010

Я делаю:

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

... однако, если сумма равна нулю для некоторой даты, вся строка отбрасывается, я хочу посмотреть: | null | some_date |, как это сделать?

Ответы [ 2 ]

2 голосов
/ 11 июня 2010

Это поможет увидеть полный вопрос в вопросе.Для каждого значения даты, существующего в stats, вы должны получить NULL для суммы или целочисленное значение.Если вы группируете по [Дата], и данное значение даты не существует, оно, очевидно, не будет отображаться.Например, рассмотрим следующий тест:

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]

Результаты должны выглядеть следующим образом:

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

Примечание. Я получаю строку, даже если Sum(Clicks) равно нулюЭто то, что вы соединяете эту информацию с чем-то другим в подсчете Sum(Clicks)?

0 голосов
/ 11 июня 2010

Поскольку вы делаете группу по дате, я предполагаю, что у вас есть более одной записи на дату.Я бы подумал, что вам придется ifnull на исходных данных, или вы потеряете некоторые.

Например, если бы 10 июня было 10, 20, 30 и ноль, вы бы получили нольвместо 60.

Я думаю, что это предотвратит эту проблему:

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