我在 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 计数 200
、487
、500
+-------------------------------------+------------+-----------+--------+
| 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/