mysql显示group by语句的空值

时间:2010-06-11 12:24:00

标签: sql mysql null group-by

我在做:

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

...但是当某个日期的总和为空时,整行都会被丢弃,我想看看:| null | some_date |,怎么做?

2 个答案:

答案 0 :(得分:2)

查看有问题的完整查询会有所帮助。对于stats中存在的每个日期值,您应该为Sum或整数值获取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)计算中的其他内容?

答案 1 :(得分:0)

由于您按日期进行分组,我假设您每个日期有多个记录。我认为您必须ifnull原始数据,否则您将失去一些。

例如,如果Jun 10th的计数为10,20,30且为null,则会得到null而不是60。

我认为这可以防止这个问题:

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