【问题标题】:show no of hours each week for specific project id sql每周显示特定项目 id sql 的小时数
【发布时间】:2016-07-25 11:05:49
【问题描述】:

我有这样的表:

现在我想查看每个项目每周的小时总和。我该如何查询。

我试过查询

select CurrentData.STATUS, 
    sum(CurrentData.HOURS), CurrentData.WEEKS 
from CURRENT_DATA CurrentData 
group by currentData.HOURS, CurrentData.STATUS, CurrentData.WEEKS, CurrentData.PROJECT_ID 
having currentData.WEEKS = CurrentData.WEEKS 
order by CurrentData.WEEKS;

但仍然每周都是单独的行。不知道该怎么做

【问题讨论】:

标签: sql oracle


【解决方案1】:

不要在 group by 中使用 HOURS。都在组函数 SUM 中:

  SELECT PROJECT_ID, STATUS, YEARS, WEEKS, SUM (CurrentData.HOURS) 
    FROM CURRENT_DATA 
GROUP BY PROJECT_ID, STATUS, Years, WEEKS
ORDER BY Years, WEEKS

以及having子句中的内容。这总是正确的。你想要特定的一周和一年吗?你可以摆脱“CurrentData”。你只有一个表,你不需要这个表的别名。

这里过滤了 2016 年并汇总了所有项目 ID:

  SELECT STATUS, WEEKS, SUM (CurrentData.HOURS) 
    FROM CURRENT_DATA 
   WHERE Years = 2016 
GROUP BY STATUS, WEEKS
ORDER BY WEEKS

【讨论】:

  • 还有:他是按 project_id 分组的,但这不在 SELECT 子句中。它在您的解决方案中(可能应该如此)。分组应该按年和周进行,而不仅仅是按周(同样,您在解决方案中正确执行了此操作;OP 没有)。
  • 感谢您的回答。但是如何在其中添加 where 子句以及如何添加。例如。如果我想要 2016 年
  • 查询的一个问题。它只会返回一个项目id的数据/
  • @williamjohn 2016 年更改
  • 你也可以过滤项目ID
猜你喜欢
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 2015-09-22
  • 2019-02-21
  • 1970-01-01
  • 2019-12-29
  • 2020-01-15
  • 1970-01-01
相关资源
最近更新 更多