每个日期/时间有多个组的MySQL查询计数

标签 mysql sql

我在 MySQL 表中有以下数据:

+-------------------------------------+-----------------+
|            DATE                     | SipResponseCode |
+-------------------------------------+-----------------+
| 20 Feb                              |             200 |
| 20 Feb                              |             500 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             487 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             500 |
| 20 Feb                              |             500 |
| 20 Feb                              |             487 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             500 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             200 |
| 20 Feb                              |             500 |
| 21 Feb                              |             200 |
| 21 Feb                              |             487 |
| 21 Feb                              |             200 |
| 21 Feb                              |             487 |
| 21 Feb                              |             487 |
| 21 Feb                              |             487 |
| 21 Feb                              |             487 |
| 21 Feb                              |             200 |
| 21 Feb                              |             200 |
| 21 Feb                              |             487 |
| 21 Feb                              |             487 |
| 21 Feb                              |             500 |

我想编写 SQL 查询,以便它可以提供每天的 SipResponseCode 计数 200487500

+-------------------------------------+------------+-----------+--------+
|            DATE                     |    200     |    487    |   500  |
+-------------------------------------+------------+--------------------+
| 20 Feb                              |     14     |      2    |    5   |
| 21 Feb                              |     4      |      7    |    1   | 

我很累,但无法得到正确的结果。

最佳答案

如果值 200、487 和 500 是您在编写查询时知道的常量值,则可以在 select 子句的 case 语句中使用这些值。

比 case 语句更具可读性的是使用带有条件的 SUM() 函数,该函数本质上会计算满足该条件的行数。试试这个:

SELECT dateColumn, 
   SUM(SisResponseCode = 200) AS '200', 
   SUM(SisResponseCode = 487) AS '487', 
   SUM(SisResponseCode = 500) AS '500'
FROM myTable
GROUP BY dateColumn;

关于每个日期/时间有多个组的MySQL查询计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28771350/

相关文章:

mysql - 按顺序循环遍历 MySQL 表。如果值为 0,则存储其旁边的单元格值。如果不是 0 则更新为存储值

mysql - 数据库中的三元关系

mysql - mysql中的正则表达式匹配而不是like

sql - 选择BETWEEN列值

php - 根据MySQL中的相关表选择数据

SQLite:为什么外键约束在这里不起作用?

mysql - MySQL查询中的复杂算法

mysql - 查询自引用联结表

sql - 将SQL查询转换为Pig查询

mysql - 如何在 MySQL 中 ORDER BY json 对象