好的,所以 - 在SQL Server中 - 我需要总结每周的记录数,并且只显示总和最高的一周(以及那周的记录数)..
到目前为止,我可以显示每条记录,但我只对最高记录感兴趣。任何帮助将不胜感激。
*编辑,因为有一些混乱: 我需要一个出现的总和,按周分组(所以在这种情况下:项目Q单位300 201435 2 是最高的,因为同一项目和单位组合的第38周的总和是1.) 输出应该如下所示。我现在得到的是所有周数及其各自的总和,我只需要用最大总和显示一周
*希望有道理:)
我的表格如下:
Project Name Subunit name Date of release Origin Week
Project X SubUnit 1 28-Jul-14 Unit 100 201431
Project X SubUnit 2 28-Jul-14 Unit 100 201431
Project X SubUnit 3 28-Jul-14 Unit 100 201431
Project X SubUnit 4 18-Sep-14 Unit 100 201438
Project X SubUnit 5 18-Sep-14 Unit 100 201438
Project X SubUnit 6 18-Sep-14 Unit 300 201438
Project X SubUnit 7 05-Aug-14 Unit 300 201432
Project X SubUnit 8 05-Aug-14 Unit 300 201432
Project X SubUnit 9 18-Sep-14 Unit 600 201438
Project X SubUnit 10 18-Sep-14 Unit 600 201438
Project X SubUnit 11 18-Sep-14 Unit 600 201438
Project X SubUnit 12 18-Sep-14 Unit 600 201438
Project Q SubUnit 1 18-Sep-14 Unit 100 201438
Project Q SubUnit 2 18-Sep-14 Unit 100 201438
Project Q SubUnit 3 18-Sep-14 Unit 100 201438
Project Q SubUnit 4 18-Sep-14 Unit 100 201438
Project Q SubUnit 5 18-Sep-14 Unit 100 201438
Project Q SubUnit 6 18-Sep-14 Unit 300 201438
Project Q SubUnit 7 29-Aug-14 Unit 300 201435
Project Q SubUnit 8 29-Aug-14 Unit 300 201435
Project Q SubUnit 9 29-Aug-14 Unit 600 201435
Project Q SubUnit 10 18-Sep-14 Unit 600 201438
Project Q SubUnit 11 18-Sep-14 Unit 600 201438
Project Q SubUnit 12 18-Sep-14 Unit 600 201438
所需的输出是:
Project Q Unit 100 201438 5
Project Q Unit 300 201435 2
Project Q Unit 600 201438 3
Project X Unit 100 201431 3
Project X Unit 300 201432 2
Project X Unit 600 201438 4
答案 0 :(得分:1)
我不知道RDBMS所以我假设SQL SERVER,因此CTE(公用表表达式)可以工作。
我们可以通过使用子查询来避免使用cte(如果需要的话)...我也删除了列名中的空格,因为我没有'知道我是否应该使用`或[或"逃避字段名称....
http://sqlfiddle.com/#!3/82c01/14/0
With CTE AS (SELECT ProjectName, Origin, Week, count(projectname) as myCount
FROM FOO
GROUP BY ProjectName, Origin, week)
SELECT A.ProjectName, A.Origin, A.Week, A.MyCount
FROM CTE A
INNER JOIN (SELECT ProjectName, Origin, Max(myCount) MaxMyCount
FROM CTE
GROUP BY ProjectName, Origin) B
on A.Projectname = B.ProjectName
and A.Origin = B.Origin
and A.myCount = B.MaxMyCount
ORDER BY ProjectName, Origin, Week
现在关于这是做什么的:
本质上我生成了3组数据。
RDBMS是基于SET的逻辑,你在集合和子集方面对事物的想法越多,(在我看来)构建这样的查询就越容易。