【发布时间】:2020-10-19 13:24:07
【问题描述】:
我得到了以下代码来运行一个查询,该查询根据最新的时间戳计算按 group_status 分组的 connector_pks 的数量:
SELECT
`group_status`,COUNT(*) 'Count of status '
FROM
(SELECT `connector_pk`, `group_status`, `status_timestamp`
FROM connector_status_report t1
WHERE `status_timestamp` = (SELECT MAX(`status_timestamp`)
FROM connector_status_report t2 WHERE t2.`connector_pk` = t1.`connector_pk`))
t3
GROUP BY `group_status`
不幸的是,这需要大约 30 分钟才能运行,所以我希望有一个优化的解决方案。
示例表
connector_pk group_status status timestamp
1 Available 2020-02-11 19:14:45
1 Charging 2020-02-11 19:18:45
2 Available 2020-02-11 19:15:45
2 Not Available 2020-02-11 19:18:45
3 Not Available 2020-02-11 19:14:45
所需的输出如下所示:
group_Status | Count of status
Available | 0
Charging | 1
Not Available | 2
对于我最初的问题,我被指出了以下问题(和答案):
Get records with max value for each group of grouped SQL results
我想用输出创建一个视图
是否也可以在查询中添加以下内容以包含在视图中:
SELECT status, = IF(status = 'charging', 'Charging', if(status = 'Not
Occupied','Available', 'Occupied') AS group_status FROM
connector_status_report
【问题讨论】:
标签: mysql-5.1