我希望有一个结果集,DATE,item1
计数,item2 .
计数全部来自同一个表。计算相同的数据列。
示例输出:
DATE | Oranges | Apples
3-28 | 4 | 5
3-29 | 3 | 2
存储日志:
id, item, date
1 | Orange | 3-28
2 | Apple | 3-28
2 | Apple | 3-29
1 | Orange | 3-29
我尝试使用第二组,但不确定它是否正确计数。
概念:
Select count(item) as apples, count(item) as orange, date(date_entered) FROM table GROUP by date(date_entered)
答案 0 :(得分:4)
您要求的内容称为“数据透视查询”。要在MySQL中完成它,你可以使用一个SUM()
聚合,其中一个条件,如果匹配的水果类型,则返回1或0:
SELECT
date,
/* CASE condition returns 1 if the string matches, 0 otherwise
and those are added up to get the count of matching rows */
SUM(CASE WHEN item = 'Apple' THEN 1 ELSE 0 END) AS apples,
SUM(CASE WHEN item = 'Orange' THEN 1 ELSE 0 END) AS oranges
FROM `table`
/* Apply the aggregate group over `date` */
GROUP BY date
请注意,如果您确切知道要返回的输出列数,则这是常规模式。如果您未提前知道所有可能的值(以及列),则需要动态生成SUM(CASE...)
列表。