mysql每天计算多个项目

时间:2014-03-31 16:21:24

标签: mysql

我希望有一个结果集,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)

1 个答案:

答案 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...)列表。