mysql, показывающий нулевые значения для группы операторами

Я делаю:

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

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

6
задан OMG Ponies 11 June 2010 в 16:15
поделиться

2 ответа

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

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) имеет значение NULL. Вы присоединяете эту информацию к чему-то еще в вычислении Sum (Clicks) ?

2
ответ дан 17 December 2019 в 20:29
поделиться

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

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

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

select ifnull(sum(ifnull(clicks,0)), 'null'), date from stats group by date;
0
ответ дан 17 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: