使用Group By聚合不同的列类型

时间:2013-12-26 11:50:08

标签: mysql sql select count group-by

我的架构看起来像这样:

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解决方案。

2 个答案:

答案 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)