mysql - SQL 时差和按 3 列分组
问题描述
我有一个 MySQL 表,我想在其中计算每个人花费的总时间,即按 3 列分组的时间差。该表如下所示:
我想要这样的输出:
我可以按 per_1 分组,但不能全部分组。
SELECT per_1, TIME_TO_SEC(TIMEDIFF(end_time,start_time)) / 3600 AS Duration
FROM os
GROUP BY per_1
任何建议将不胜感激。
解决方案
架构对我来说看起来不正确。不过,您可以通过以下方式获得相同的结果UNION ALL
:
SELECT Person, SUM(Duration)
FROM (
SELECT per_1 AS Person, TIME_TO_SEC(TIMEDIFF(end_time, start_time)) / 3600 AS Duration
FROM os
WHERE per_1 IS NOT NULL AND per_1 <> ''
UNION ALL
SELECT per_2 AS Person, TIME_TO_SEC(TIMEDIFF(end_time, start_time)) / 3600 AS Duration
FROM os
WHERE per_2 IS NOT NULL AND per_2 <> ''
UNION ALL
SELECT per_3 AS Person, TIME_TO_SEC(TIMEDIFF(end_time, start_time)) / 3600 AS Duration
FROM os
WHERE per_3 IS NOT NULL AND per_3 <> ''
) AS derived
GROUP BY Person
ORDER BY SUM(Duration) DESC;
推荐阅读
- hp-uft - 我可以在 LeanFT 中进行 REST API 测试并在 HP ALM 中更新测试结果吗?
- sql - 如何通过从多连接选择语句中选择所有列来创建视图或表?
- python - 如何在特定的行和列上合并 2 个 DataFrame?
- php - 在 XAMPP OS X 10.13.5 上安装 PDFlib
- javascript - 当使用“super”将“eventEmitter”扩展到我的班级时,this.name 返回 undefined
- php - 从 PhpStorm 在 docker 上运行测试不会启动 apache2
- angular - Angular - 将额外的表单数据传递给服务器
- postgresql - 更改主键数据类型
- django-rest-framework - Django Rest Framework是否可以通过外键使用geometry_field从查询中序列化geojson?
- regex - 带有可选小数和反向引用的 sed 数字