postgres 实现查询某条数据的排名
我就废话不多说了,大家还是直接看代码吧~
select*from(selectROW_NUMBER()OVER(ORDERBYfatdescnullslast)ASxuhao,foodnum,foodname,fatfromek_foodwhereisdel=0)foodwherefoodnum='Ss192008'
涉及到的问题
1.排序时,字段值为null的会排在前面,导致数据不准确,解决办法在orderby后面增加nullslast
2.给查询的结果增加序号selectROW_NUMBER()OVER(ORDERBYfatdescnullslast)ASxuhao
补充:利用PostgreSQL实现对数据进行排名
一、需求:对以下用户的积分进行排名计算
需要知道user_id=k的用户对应的积分排名
二、通过PostgreSQL的窗口函数实现
SELECTuser_id,name,score,RANK()OVER(ORDERBYscoreDESC)FROMuser;
如要获取排名<3的用户:
SELECTuser_id,name,score,user_rankFROM(SELECTuser_id,name,score,RANK()OVER(ORDERBYscoreDESC)ASuser_rankFROMuser)ASTWHEREuser_rank<3;
--注意子查询在from中需要写别名
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。