row_number() over() 问题

-- row_number() over() 函数必须根据已经存在的列进行分组和排序,不会更改整个查询的总行数
-- 如果没有分组group by 则直接根据相对应的列进行分组和另外的列进行排序
-- 如果进行分组,则可以使用聚合函数,对对应的列分组,对另外的聚合函数进行排序

-- 如果没有分组直接根据列进行分组和排序,可以使用partition by 和 distribute by
-- order 是全局排序,可以单独使用,sort by 必须和distribute by 一起使用
select
    params['car_series_id'] as series_id,
    params['car_series_name'] as series_name,
    row_number() over(distribute by params['car_series_name'] sort by params['car_series_id'] asc) as rank_id,
    row_number() over(partition by params['car_series_name'] order by params['car_series_id'] asc) as rank_id2,
    row_number() over(partition by params['car_series_name']) as rank_id3, -- 单分组 如果排序?
    row_number() over(distribute by params['car_series_name']) as rank_id4,-- 但分组 如何排序?
    row_number() over(order by params['car_series_id'] asc) as rank_id5,   -- 单排序 整体排序
    row_number() over(sort by params['car_series_id'] asc) as rank_id6     -- 单sort 如果排序
from
    dm_autocar.autocar_mds_event_detail
where
    date = '${date}'
    -- date > '${date-12M}' and date <= '${date}'
    and event = 'page_enter'
    and params['page_id'] = 'page_car_series'







select
    params['car_series_id'] as series_id,
    params['car_series_name'] as series_name,
    count(distinct user_id) as enter_uv,
    row_number() over(order by count(distinct user_id) desc) as rank_id
from
    dm_autocar.autocar_mds_event_detail
where
    date = '${date}'
    -- date > '${date-12M}' and date <= '${date}'
    and event = 'page_enter'
    and params['page_id'] = 'page_car_series'
group by
    params['car_series_id'],
    params['car_series_name']
全部评论

相关推荐

07-04 21:23
已编辑
东莞城市学院 后端
秋招和春招只收到几个中大厂的笔试,本人比较菜,感觉大厂的笔试太难,算法题不能全部做出来就没过了,但是CVTE和小天才的感觉不是很难,基本上都做出来了,笔试还是挂了。Boss上投了Java后端开发都没有回音,boss上有面试机会都是C#工控软件开发方向的,但是这个方向不太懂,资料又少,面试的表现有点差,现在还是想看看Java这边,面试的时候比较有把握点。想请教一下,这份简历还有什么问题,一直没什么机会,还有什么地方要修改的。
程序员小白条:学历太差,民办和公办,外包还得区分的,这个学历+这个简历,没的办法,除非你有人脉,太难了,这环境,何况你都毕业了,连一段实习都没,肯定没公司会挑选了,没竞争力,开发才招几个人,跟你竞争的可不是二本,三本的人哦,何况你在二本,三本里面也排名不高
投递小天才等公司7个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 11:30
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务