oracle用分组函数,按多个维度查排名

记录下,今天终于会用oracle分组函数了,这个逻辑可把我绕蒙圈了。。。
说明如下:
需要查客户最新两个月的数据。但是数据库存储的最小维度是周。
所以需要查最新两个月,并且是每个周是最大的数据。
分组需要按照多个维度分组。然后排序。

  1. 分组出每个月的周,倒叙排列
  2. 每个月只取一条数据,取排名第一的,得到不重复的月
  3. 把月进行倒叙,取前两个
    简单记录下,有空再完善。 本质上是个排名的问题。
SELECT * FROM(SELECT * FROM(SELECT"id","year","month","week","evaluation_way","product_type","customer",row_number ( ) over ( PARTITION BY "month", "product_type", "customer" ORDER BY "year" DESC, "month" DESC, "week" DESC ) AS rn FROM"C_E_INFO" WHERE"customer" = 'LGE' AND "evaluation_way" = 'Z' ) WHERErn <= 1 ORDER BY"month" DESC ) 
WHEREROWNUM <= 2

数据看起来比较清晰点
最开始的数据
在这里插入图片描述
第一次分组处理
在这里插入图片描述
只取月的
在这里插入图片描述
只取最近的两条
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部