【发布时间】:2018-03-26 12:12:55
【问题描述】:
我在 postgres10、T1 和 T2 中有 2 个表,如下所示,我想要 3 个不同的查询:
- 一个查询中每个用户的 nb_hour_doc + nb_hour_interv 总数;
- 一个查询中每个用户的 nb_doc + nb_interv 总数;
- 每个项目的 nb_hour_doc + nb_hour_interv 总数;
表 T1
|用户 ID |用户名 |项目 | nb_hour_doc | nb_doc |文档开始 |文档结束 | |-----------|:-------:|----------:|---- ----------|:-------:|------------------:|--------- ----------| |1001 |多多 |其他 |11000 |2 |2018-03-25 12:13:00|2018-03-25 12:15:00| |1002 |戴安娜 |GIT |7000 |1 |2018-03-25 13:00:00|2018-03-25 13:15:00| |1003 |Alex |DEV |7001 |3 |2018-03-25 11:03:05|2018-03-25 11:35:40| |1003 |Alex |插头 |10000 |1 |2018-03-25 12:23:00|2018-03-25 12:25:00| |1002 |戴安娜 |插头 |7100 |1 |2018-03-25 12:16:00|2018-03-25 12:51:00|表 T2:
|用户 ID |用户名 |项目 | nb_hour_interv | nb_interv | int_start | int_end | |---------|:---------:|--------:|-------------|--- --|------------------------|----------| | 1003 |亚历克斯 |其他 | 71 | 2 | 2018-03-25 12:13:00 | 2018-03-25 12:15:00 | | 1003 |亚历克斯 |开发 | 71 | 1 | 2018-03-25 08:11:00 | 2018-03-25 08:30:00 | | 1003 |亚历克斯 |其他 | 171 | 5 | 2018-03-25 02:08:00 | 2018-03-25 02:45:00 | | 1001 |托托 |下一个 | 31 | 4 | 2018-03-25 13:13:00 | 2018-03-25 13:15:00 | | 1003 |亚历克斯 |插头 | 10 | 1 | 2018-03-25 14:19:00 | 2018-03-25 14:55:00 | | 1002 |戴安娜 |第一 | 70 | 1 | 2018-03-25 17:43:00 | 2018-03-25 17:55:00 |还有一个包含用户信息的表格:
用户:
|用户 ID |用户名 | |---------|:---------:| | 1002 |戴安娜 | | 1003 |亚历克斯 | | 1004 |博托 | | 1001 |托托 |我使用了这个查询,但它没有给出预期的结果:
select u.user_id, u.user_name, COALESCE(sum(vd.nb_hour_doc),0) as nb_hour_doc, COALESCE(sum(vd.nb_doc),0) as nb_doc, COALESCE(vi.project,'none') as projet_nom_doc, COALESCE(vd.project,'none') as projet_nom_int,
COALESCE(sum(vi.nb_hour_interv),0) as nb_hour_interv, COALESCE(sum(vi.nb_interv),0) as nb_interv from users u
LEFT JOIN T1 vd ON vd.user_id = u.user_id
LEFT JOIN T2 vi ON vi.user_id = u.user_id
GROUP BY vi.project, u.user_id, u.user_name, vd.project
谁能帮帮我?
我想要这样的东西:
- nb_hour_doc + nb_hour_interv 的总和
- 每个用户的 nb_doc + nb_interv 总数:
- 每个项目的 nb_hour_doc + nb_hour_interv 总数
【问题讨论】:
-
我添加了预期的输出。
-
当您使用
vi.nb_hour_interv,并且vi 是T2 别名,但T2 没有名为nb_hour_interv 的字段时,查询是如何工作的? -
抱歉,编辑的时候忘记改名字了。
-
请不要在一个问题中问多个问题。
标签: sql postgresql join