• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    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 的用户对应的积分排名

    二、通过 PostgreSQL 的窗口函数实现

    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

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

    您可能感兴趣的文章:
    • postgresql数据库根据年月查询出本月的所有数据操作
    • postgresql通过索引优化查询速度操作
    • postgresql查询锁表以及解除锁表操作
    • Postgresql 实现查询一个表/所有表的所有列名
    上一篇:在postgresql数据库中判断是否是数字和日期时间格式函数操作
    下一篇:postgresql rank() over, dense_rank(), row_number()用法区别
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    postgres 实现查询某条数据的排名 postgres,实现,查询,某条,