得到一组被记录的

Dip*_*mar 5 php mysql group-by

首先,它是SQL Fiddle Demo.

现在你可以在小提琴看到我有两个表命名project,并working和其与具有除了第二个表相同的名称组合在一起,现在我已经分组的项目有_QA后缀.

这意味着我已经成功实现了查询,允许我对该项目进行分组,但现在我还需要为这两个项目计算SUM计划时间.

如果你看到在拨弄它的未来1000,但必须2500意味着两者的总和结果project和project_QA

谢谢.

Jus*_*tin 3

我的尝试......:

SELECT p.name,
  (SELECT SUM(p1.planned_hour)
   FROM project p1
   WHERE REPLACE(p1.name,'_QA','') = REPLACE(p.name,'_QA','') ) AS ProjectPlannedHour,
  SUM( ROUND( TIME_TO_SEC( TIMEDIFF( vv.end_date, vv.start_date ) ) / 3600 ,2)) AS TotalHour
FROM project p
INNER JOIN working vv ON vv.project_id = p.id
GROUP BY  REPLACE(p.name,'_QA','')
ORDER BY TotalHour DESC
LIMIT 0,5
Run Code Online (Sandbox Code Playgroud)

通过加入:

SELECT p.name,
       p1.planned_hour AS ProjectPlannedHour,
       SUM(ROUND(TIME_TO_SEC(TIMEDIFF(vv.end_date, vv.start_date)) / 3600 ,2)) AS TotalHour
FROM project p
INNER JOIN working vv ON vv.project_id = p.id
INNER JOIN (SELECT REPLACE(name,'_QA','') AS `name`,
                   SUM(planned_hour) AS planned_hour
                   FROM project
                   GROUP BY REPLACE(name,'_QA','')) p1 
         ON REPLACE(p1.name,'_QA','') = REPLACE(p.name,'_QA','')
GROUP BY REPLACE(p.name,'_QA','')
ORDER BY TotalHour DESC LIMIT 0, 5
Run Code Online (Sandbox Code Playgroud)

结果:

|    NAME | PROJECTPLANNEDHOUR | TOTALHOUR |
|---------|--------------------|-----------|
| project |               2500 |      4.67 |
Run Code Online (Sandbox Code Playgroud)

也许有人给出更好的解决方案,我还无法找出更简单的查询......