mysql - MySQL 一天内多个项目的单独计数

标签 mysql

我正在尝试一次显示一天中多项 claim 的状态。例如,“date1”有 3 个声明。每个 claim 都有不同的状态。如何显示“date1”内所有 claim 的状态计数。也就是说,我想按最早到最晚的日期对我的结果进行排序,然后用三列来计算当天有多少 claim 具有该状态。三个状态列加起来就是当天的 claim 总数。这就是我希望它看起来像的样子:(St1 - St3 代表独特的状态)

Date      St1 St2 St3
12-02-12 | 1 | 2 | 3
12-03-12 | 2 | 5 | 3
12-04-12 | 7 | 3 | 8

我开始使用的查询看起来像这样,但它完全不正确。

SELECT dates, statuses, COUNT(*) AS St1 FROM table_dates GROUP BY dates;

这是我尝试只获取一个状态的计数。想我必须从某个地方开始。谢谢。

最佳答案

您想将状态添加到您的 GROUP BY:

SELECT dates, status, COUNT(*) AS cnt
FROM table_dates
GROUP BY dates, status

这将以与您要求的格式略有不同的格式给出您的结果:

Date       | Status | cnt
2012-12-02 | 1      | 1 
2012-12-02 | 2      | 2 
2012-12-02 | 3      | 3 
2012-12-03 | 1      | 2 
2012-12-03 | 2      | 5 
2012-12-03 | 3      | 3 
2012-12-04 | 1      | 7 
2012-12-04 | 2      | 3 
2012-12-04 | 3      | 8 

这可能是一种更好的格式,因为如果您稍后添加新状态,您的数据库架构、SQL 查询和客户端代码都不需要更改。

关于mysql - MySQL 一天内多个项目的单独计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11267791/

相关文章:

mysql group by 删除一些列后

mysql - 使用选项计算工作时间

javascript - 只有一个 "save changes"按钮更新设置页面

mysql - 在Windows VPS上设置MYSQL数据库用于连接外部网络

mysql - 运行 mysqldump 时出现“未知选项 -W”错误

MySQL:UNION 和许多 ORDER BY RANDOM

mysql - 根据两个id获取计数

java - 在mysql,java中计算日期范围内的价格

php - 将 dateTime 插入 mysql 不起作用

MySQL 两列表作为主键