Better late than never.

Mysql高级Rank排名语句

ps: 两个月前的实现。。。 坚持写博客真不是一件容易的事(不是高级,只是mysql的变量)

需求

  • 统计数据库所有用户的月销售总额
  • 排名结果按 1.A;2.B;2.C;4.D 的方式展示 (如果销售总额一样,则显示顺序以先达到的显示在前面)
用户 销售总额
A 1200元
B 800元
C 800元
D 600元
  • 列表展示100(+25)条排名数据
    • 如果自己的排名在75名之后,自己排名后面补足25名
    • 如果自己的排名在100名之后支持前后各看25名 (<=51条数据)

处理方案

处理方法一

  • 数据表没有记录用户的销售总额
  • 使用mysql的高级Rank排名语句 参考
  • 服务器开启定时任务,定时统计所有用户的销售总额,将排名结果写入新的数据表,查询时直接取出结果

处理方法二

  • 记录用户的销售总额
  • 运行脚本统计所有用户的销售总额(只运行一次,销售总额在指定条件触发之后统计)
  • 从数据库查询之后在对总体结果集做数据并别排名 算法参考

-- END

写的不错,赞助一下主机费

扫一扫,用支付宝赞赏
扫一扫,用微信赞赏

暂无评论~~