2010-06-11 3 views
6

я делаю:MySQL показывает нулевые значения для группы по высказываниям

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

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

+0

Это поможет увидеть полный запрос – Thomas

ответ

2

It поможет увидеть полный запрос. Для каждого значения даты, которое существует в 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

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

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

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

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