mysql - 选择带有减号和总和的查询
问题描述
有 3 个表user
:project
和tracking
。这是表格tracking
:
ID | 用户身份 | 项目编号 | 开始时间 | 时间结束 |
---|---|---|---|---|
123 | 32 | 12 | 8 | 12 |
124 | 32 | 12 | 13 | 17 |
125 | 77 | 63 | 10 | 11 |
126 | 77 | 12 | 13 | 17 |
127 | 15 | 12 | 15 | 17 |
128 | 24 | 12 | 8 | 10 |
字段start_time
和end_time
与工作时间相关(8 到 12、13 到 17)。当然,每天,用户都可以为许多项目做出贡献。
现在我想获得如下项目信息:
项目名称 | 总跟踪时间 |
---|---|
第一的 | 1860 |
第二 | 3122 |
其中,Total tracking time
是项目成员被跟踪为贡献者的所有时间的总和。
如何通过select
查询获得此结果?以下不起作用。
SELECT *,
SUM(SELECT *, (end_time - start_time) AS tracking_time,
FROM tracking
WHERE project_id = project.id
)) AS tracking_time,
FROM project
解决方案
您的查询应该是这样的:
SELECT p.*, t.tracking_time
FROM project p
JOIN (
SELECT project_id, SUM(end_time - start_time) AS tracking_time
FROM tracking
GROUP BY project_id
) t ON p.project_id = t.project_id
或者,正如您尝试的那样,更正的查询也将起作用:
SELECT *,
(SELECT SUM(end_time - start_time) AS tracking_time
FROM tracking
WHERE project_id = project.id
) AS tracking_time
FROM project
推荐阅读
- java - 降级 java/gradle 版本的自制软件
- java - Java连接两个可跨字符串的问题
- r - R:用匹配的条形颜色填充线连接条形图
- javascript - 使用 React Router 的导航测试失败
- objective-c - Swift 中这个 Objective-C 安全类型转换表达式的等价物是什么?
- java - List 无法解析为类型,ArrayList 无法解析为类型
- java - 使用 Spring Oauth2RestTemplate 时如何切换到服务用户
- javascript - 如何在第一页显示电视节目?
- python - 我在 google colab 中遇到 python 代码问题
- r - 使用 lubridate withing R 将周期转换为时间