我正在尝试建立一个查询来计算哪个组织每个区每个区的人员出勤率最高? 条款: “区”和“loinum”意思相同。马萨诸塞州有31个区。 “Org”是一个地方分会,在其中一个区。 “官员”是通过“TY”命名为“WM”的职位。 表是
loinum month year org wm sw jw ty
1 8 2011 Ma 0 1 1 1
1 9 2011 CA 1 1 0 0
1 8 2011 La 1 0 0 1
2 7 2011 ME 1 1 1 1
2 6 2011 io 1 0 0 0
2 9 2011 BO 1 0 0 0
3 5 2011 Ch 1 1 1 1
3 4 2011 AL 0 0 0 1
3 4 2011 EG 0 1 1 0
我如何计算并获得每个月和每个月的最大值?
答案 0 :(得分:2)
这是一个通用的解决方案,但对于特定的DB,可能会有更好的解决方案。创建一个内联视图,获取每个loinum,month和year的最大值。然后将它连接回主表。
注意:如果最大值达到平局,则给定的loinum,月份和年份将有多个结果
SELECT t.*
FROM table1 t
INNER JOIN (SELECT loinum,
month,
year,
Max(wm + sw + jw + ty) oCount
FROM table1
GROUP BY loinum,
month,
year) AS MAX
ON t.loinum = max.loinum
AND t.month = max.month
AND t.year = max.year
AND ( wm + sw + jw + ty ) = max.oCount
结果
LOINUM MONTH YEAR ORG WM SW JW TY
1 8 2011 Ma 0 1 1 1
1 9 2011 CA 1 1 0 0
2 6 2011 io 1 0 0 0
2 7 2011 ME 1 1 1 1
2 9 2011 BO 1 0 0 0
3 4 2011 EG 0 1 1 0
3 5 2011 Ch 1 1 1 1