MySQL group by with rollup,coalesce / ifnull和date函数

时间:2016-07-26 04:01:24

标签: mysql date coalesce rollup

我遇到了MySQL的ROLLUP问题,并处理了由此产生的NULL。 IFNULL / COALESCE函数适用于普通列,但在与日期函数一起使用时似乎会崩溃。示例如下:

SELECT
    YEAR(date_time) AS Year,
    count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP

返回(按预期方式)

Year Count
---- -----
2015 3
2016 2
NULL 5

当我查询非日期列(例如varchar)时,我可以使用IFNULL或COALESCE函数来处理NULL值,以用字符串替换NULL值。但是,当我将相同的逻辑应用于上述查询时,它似乎不起作用。

SELECT
    COALESCE(YEAR(date_time), 'moo') AS Year,
    count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP

SELECT
    IFNULL(YEAR(date_time), 'moo') AS 'year',
    count(x) AS Count
FROM mytable
GROUP BY year WITH ROLLUP

返回

Year Count
---- -----
2015 3
2016 2
NULL 5

而非预期

Year Count
---- -----
2015 3
2016 2
moo  5

任何想法,建议?

1 个答案:

答案 0 :(得分:2)

如果您尝试定位聚合汇总计算期间生成的NULL(与原始数据中的NULL相对),则表示错误{{1 }}秒。如果是这样,这可能就是你想要做的事情:

NULL

这是sqlfiddle