0
問題是:對於每一天,列出已閱讀最多消息數的用戶標識。Oracle嵌套分組
user_id msgID read_date
1 1 10
1 2 10
2 2 10
2 2 23
3 2 23
我相信,日期是外組和user_id是內部組,但怎麼做組嵌套在SQL?或以某種方式避免這一點?
問題是:對於每一天,列出已閱讀最多消息數的用戶標識。Oracle嵌套分組
user_id msgID read_date
1 1 10
1 2 10
2 2 10
2 2 23
3 2 23
我相信,日期是外組和user_id是內部組,但怎麼做組嵌套在SQL?或以某種方式避免這一點?
這是一個窗函數任務:
select *
from
(
select user_id, read_date, count(*) as cnt,
rank()
over (partition by read_date -- each day
order by count(*) desc) as rnk -- maximum number
from tab
group by user_id, read_date
) dt
where rnk = 1
這可能返回多個用戶提供一個具有相同的最大數,如果你只想要一個(隨機)切換到ROW_NUMBER
select user_id
from
(
select user_id,count(msgID)
from table
group by read_date
)
where rownum <= 1;
很好的回答@dnoeth,但你已經有了'分區'的spello :) –
@GordonLinoff:感謝您發現... – dnoeth
@dnoeth這正是我想要的。非常感謝! – tic30