今天就跟大家聊聊有关利用postgres 怎么对数据的排名进行查询,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
select * from (select ROW_NUMBER () OVER (ORDER BY fat desc nulls last) AS xuhao,foodnum,foodname,fat from ek_food where isdel=0) food where foodnum = 'Ss192008'
1.排序时,字段值为null的会排在前面,导致数据不准确,解决办法 在order by后面增加 nulls last
2.给查询的结果增加序号 select ROW_NUMBER () OVER (ORDER BY fat desc nulls last) AS xuhao
补充:利用 PostgreSQL 实现对数据进行排名
user_id | name | score |
1 | john | 1000 |
2 | mike | 1200 |
3 | jelly | 1300 |
4 | brook | 1500 |
5 | nanny | 1200 |
需要知道 user_id = k 的用户对应的积分排名
SELECT user_id, name, score, RANK() OVER (ORDER BY score DESC) FROM user;
user_id | name | score | rank |
4 | brook | 1500 | 1 |
3 | jelly | 1200 | 2 |
2 | mike | 1300 | 3 |
5 | nanny | 1500 | 3 |
1 | john | 1200 | 5 |
如要获取排名 < 3 的用户:
SELECT user_id, name, score, user_rank FROM (SELECT user_id, name, score, RANK() OVER (ORDER BY score DESC) AS user_rank FROM user) AS T WHERE user_rank < 3;
-- 注意子查询在from中需要写别名
user_id | name | score | rank |
4 | brook | 1500 | 1 |
3 | jelly | 1200 | 2 |
看完上述内容,你们对利用postgres 怎么对数据的排名进行查询有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。