oracle用分组函数,按多个维度查排名
记录下,今天终于会用oracle分组函数了,这个逻辑可把我绕蒙圈了。。。
说明如下:
需要查客户最新两个月的数据。但是数据库存储的最小维度是周。
所以需要查最新两个月,并且是每个周是最大的数据。
分组需要按照多个维度分组。然后排序。
- 分组出每个月的周,倒叙排列
- 每个月只取一条数据,取排名第一的,得到不重复的月
- 把月进行倒叙,取前两个
简单记录下,有空再完善。 本质上是个排名的问题。
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
数据看起来比较清晰点
最开始的数据

第一次分组处理

只取月的

只取最近的两条

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