我的架构看起来像这样:
id type date
1 like 2013-12-25
2 comment 2013-12-25
3 like 2013-12-26
4 comment 2013-12-26
我要做的是聚合并计算特定的所有喜欢和评论,并在单个查询中检索它们。现在我正在使用它:
SELECT
(CASE WHEN type = 'like' THEN COUNT(id) END) as likes,
(CASE WHEN type = 'comment' THEN COUNT(id) END) as comments,
date_trunc('day', date)
FROM
my_table
GROUP BY date_trunc('day', date), type
问题是,行没有以正确聚合数据的方式返回。那么如何在一个组中通过?
检索同一列上的不同值此外,正在使用的数据库是Postgres,但也是一个可接受的答案的Mysql解决方案。
答案 0 :(得分:1)
试试这个..
SELECT SUM(IF(type ='like',1,0) )as Likes,
SUM(IF(type='comment',1,0)) comments,
DAY(DATE) 'day'
FROM `test_types`
GROUP BY DAY(DATE)
答案 1 :(得分:0)
试试这个:
SELECT DAY(tt.DATE) 'day', SUM(tt.type ='like')AS Likes,
SUM(tt.type='comment') comments
FROM `test_types` tt
GROUP BY DAY(tt.DATE)