mysql - SQL,计算多个模块出现的天数

标签 mysql datetime group-by count

我的数据显示了几个不同模块在某个时间戳出现的 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/

相关文章:

mysql - WordPress 表情符号在数据库迁移后消失了

php - 内存中的临时 MySql 数据库仅用于 hacky IPC?

datetime - 如何使用 &optional arg 和冒号调用 LISP 函数,例如 `(formato ' (( :year 0 4) (:month 4 6) (:day 6 8)))`

python - 在 Python 中,如何以可读格式显示当前时间

mysql - 如何在 3 个关联表中获取最大日期的字段值

sql - 在 View 中基于相同的值创建 JSON

mysql - 发布 http ://localhost:4200/addTask 404 (Not Found) in Angular2 and node js but values are printing in console

mysql - 何时使用 node-mysql 模块打开连接?

c# - day <= 12 时的 DateTime 问题

mysql sql语句在一行处停止解析