【问题标题】:Select query with minus and sum选择带有减号和总和的查询
【发布时间】:2021-07-15 03:56:43
【问题描述】:

有 3 个表:userprojecttracking。这是tracking的表格:

id user_id project_id start_time end_time
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_timeend_time 字段与工作时间相关(8 到 12、13 到 17)。 当然,每天,用户都可以为许多项目做出贡献。

现在我想获取项目信息如下:

Project name Total tracking time
First 1860
Second 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

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您的查询应该是这样的:

    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
    

    【讨论】:

      【解决方案2】:

      假设project表的列名,我认为以下查询可以提供帮助:

      SELECT 
          name as 'Project name', 
          SUM(end_time - start_time) as 'Total tracking time'
      FROM project p JOIN tracking t
      ON p.id = t.project_id
      GROUP BY name
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-21
        • 1970-01-01
        • 1970-01-01
        • 2013-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        相关资源
        最近更新 更多