实例:

查询记录中n_shlc次数最大的那条数据(即根据c_xsbh去重后如何取数)
查询思路:
根据c_xsbh分组排序从,然后取rank=1的记录
根据c_xsbh分组排序后的查询结果:

最终查询sql如下:
select * from (select *,"rank"() over(PARTITION by c_xsbh order by n_shlc DESC) from t_zhba_sjsh) as tt
where rank=1
最终查询结果:

关于rank() over()的使用方法:
创建一个test表,并插入6条数据。
CREATE TABLE test
(
a INT,
b INT,
c CHAR
)
INSERT INTO test VALUES(1,3,'E')
INSERT INTO test VALUES(2,4,'A')
INSERT INTO test VALUES(3,2,'D')
INSERT INTO test VALUES(3,5,'B')
INSERT INTO test VALUES(4,2,'C')
INSERT INTO test VALUES(2,4,'B')
SELECT * from test
a b c
----------- ----------- ----
1
数据库查询:rank() over() 去重与排名技巧

本文通过实例演示了数据库中使用`rank() over()`函数进行数据去重和排名的方法。首先,展示了如何根据字段`c_xsbh`去重并获取最大`n_shlc`的记录。接着,通过创建test表和插入数据,解释了`rank() over()`在不同分组和排序条件下的应用,强调了`partition by`和`order by`在排名过程中的作用。
最低0.47元/天 解锁文章
969

被折叠的 条评论
为什么被折叠?



