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