按类型分组数据并显示

时间:2015-09-29 14:11:32

标签: mysql

我有一个名为'product'的表,带有'created_at'日期,'type'是varchar。

基本上我想要的是对于所有产品类型,每天产品的COUNT(*)输出。我知道'type'只有5个不同的值,所以这会使我想象的查询缩小一点。

示例:

enter image description here

我一直在玩这个没有成功,似乎无法绕过它。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试此查询

SELECT 
SUM(CASE WHEN type = 'type1' THEN 1 ELSE 0 END) AS type1_count,
SUM(CASE WHEN type = 'type2' THEN 1 ELSE 0 END) AS type2_count,
SUM(CASE WHEN type = 'type3' THEN 1 ELSE 0 END) AS type3_count,
SUM(CASE WHEN type = 'type4' THEN 1 ELSE 0 END) AS type4_count,
created_at
GROUP BY created_at

具体日期

SELECT 
SUM(CASE WHEN type = 'type1' THEN 1 ELSE 0 END) AS type1_count,
SUM(CASE WHEN type = 'type2' THEN 1 ELSE 0 END) AS type2_count,
SUM(CASE WHEN type = 'type3' THEN 1 ELSE 0 END) AS type3_count,
SUM(CASE WHEN type = 'type4' THEN 1 ELSE 0 END) AS type4_count,
created_at
WHERE created_at = '2015-12-21'
GROUP BY created_at

使用日期格式

SELECT 
SUM(CASE WHEN type = 'type1' THEN 1 ELSE 0 END) AS type1_count,
SUM(CASE WHEN type = 'type2' THEN 1 ELSE 0 END) AS type2_count,
SUM(CASE WHEN type = 'type3' THEN 1 ELSE 0 END) AS type3_count,
SUM(CASE WHEN type = 'type4' THEN 1 ELSE 0 END) AS type4_count,
DATE_FORMAT(created_at,'%Y/%m/%d') AS created_date
GROUP BY created_at
HAVING created_date = '2015/12/21'