我的 mysql 数据库类似于以下内容,并且正在努力正确使用 case、group by 和 order by 语句。示例数据集:
ID Date Direction
1 2017-04-01 1
2 2017-04-01 1
3 2017-04-01 -1
4 2017-04-01 1
5 2017-04-01 -1
6 2017-04-01 1
7 2017-04-02 -1
8 2017-04-02 -1
9 2017-04-02 -1
10 2017-04-02 1
11 2017-04-02 -1
12 2017-04-03 -1
我试图了解聚合此表并按日期分组的最佳方法,以便查询返回以下记录集。下面的“正”列只是方向列(上方)的计数,其中方向 > 0。类似地,“负”列是方向列的计数,其中方向 < 0,如下所示:
DATE positive negative
2017-04-01 4 2
2017-04-02 1 4
2017-04-03 0 1
我试过:
SELECT DATE,
CASE
WHEN direction < 0 THEN 'negative'
WHEN direction > 0 THEN 'positive'
END AS updownType, count(*) AS updownCount
FROM table WHERE DATE BETWEEN '2017-04-01' AND '2017-04-03'
GROUP BY DATE, updownType
ORDER BY DATE ASC
我已经查看了关于该主题的数十个 SO 线程,但还没有遇到我正在寻找的内容。任何建议表示赞赏
最佳答案
哎呀,你只是想念它。见下文
SELECT DATE,
count(CASE WHEN direction < 0 THEN '1' END) AS negative,
Count(CASE WHEN direction > 0 THEN '1' END) AS positive
FROM table WHERE DATE BETWEEN '2017-04-01' AND '2017-04-03'
GROUP BY DATE
ORDER BY DATE ASC
关于mysql - 按日期和 Case 语句分组的 SQL 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43579350/