我使用的是MS SQL Server 2010。 我有一个包含数百万行的表,如下所示:
Number | SITE |Events_Work |Events_Nonwork
---------- | -------- | --------- | ------------
1234567 | 1508 | 1 | 4
1234567 | 8263 | 1 | 0
1234567890 | 1905 | 0 | 1
1234567890 | 1697 | 0 | 0
1234567890 | 1697 | 1 | 0
22222222 | 2151 | 2 | 2
22222222 | 1905 | 3 | 1
22222222 | 1575 | 0 | 0
22222222 | 1575 | 4 | 1
1234567 | 1475 | 0 | 0
1234567 | 1110 | 0 | 0
1234567 | 1508 | 0 | 0
我应该根据以下各项找到最常用的SITE:工作时事件的SUM(Events_Work)和evenets Non_work_time的SUM(Events_Nonwork)。
有任何建议如何做到这一点?
答案 0 :(得分:0)
尝试使用窗口函数为每个数字中的每个网站找到两列的总和并对其进行排名:
select *
from (
select t.*,
rank() over (
partition by number order by s desc
) rnk
from (
select t.*,
sum(coalesce(events_work, 0) + coalesce(events_nonwork, 0)) over (
partition by number,
site
) s
from your_table t
) t
) t
where rnk = 1;
答案 1 :(得分:0)
with tmp1 as (
select Number, Site, eventsw + eventsNW total
from YourTable
group by Number, Site, eventsw + eventsNW
)
select Number, Site, max(total)
from tmp1
group by Site, Number
如果我理解你的问题,这应该是你想要的。