我的数据显示了几个不同模块在某个时间戳出现的 A 和 B,这是一个虚拟表(对于布局抱歉,真的不知道如何正确执行此操作):
-------------------------------------------
|Timestamp | Occurrence | Module |
2018-01-29 11:03:31 | A | M1
2018-01-29 15:23:38 | A | M1
2018-01-29 17:10:10 | B | M1
2018-01-29 20:49:47 | B | M2
2018-01-29 21:01:11 | A | M2
-
2018-01-30 02:32:16 | A | M1
2018-01-30 04:59:47 | B | M2
-
2018-01-31 03:18:25 | B | M2
2018-01-31 07:26:55 | A | M2
2018-01-31 09:01:01 | A | M1
2018-01-31 11:41:33 | B | M2
2018-01-31 14:58:42 | B | M2
我想要的是让所有模块计算至少记录 1 次事件的天数,并对事件 A 和 B 进行计数,以便对于虚拟表将出现以下结果:
Module | Occurence_A | Occurence_B
_ M1 _ | _____ 3 ____ | ____1____
_ M2 _ | _____2_____ | ____3____
我尝试了几个 GROUP BY 和 SELECT COUNT 语句,但我似乎无法弄清楚。有谁可以帮忙吗?
最佳答案
GROUP BY 模块并计算出现的不同日期:
SELECT Module,
COUNT(DISTINCT CASE WHEN Occurrence = 'A' THEN DATE(Timestamp) END) AS Occurrence_A,
COUNT(DISTINCT CASE WHEN Occurrence = 'B' THEN DATE(Timestamp) END) AS Occurrence_B
FROM tablename
WHERE Occurrence IN ('A', 'B')
GROUP BY Module
请参阅demo .
结果:
| Module | Occurrence_A | Occurrence_B |
| ------ | ------------ | ------------ |
| M1 | 3 | 1 |
| M2 | 2 | 3 |
关于mysql - SQL,计算多个模块出现的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57728413/