1

我正在尝试建立一个查询来计算每个地区每个月哪个组织的官员出勤率最高?术语:“区”和“loinum”的意思相同。马萨诸塞州有 31 个区。“组织”是一个地方分会,位于其中一个地区。“官员”是名为“WM”到“TY”的职位。桌子是

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

我如何计算并获得每个 loinum 和每个月的最大值?

4

1 回答 1

2

这是一个通用的解决方案,尽管对于特定的数据库可能会有更好的解决方案。创建一个内联视图,获取每个 loinum、月和年的最大值。然后将其加入主表。

注意:如果最大值相同,则给定的 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
于 2012-05-07T04:43:45.653 回答