mysql 中根据查询结果排名 博客分类: 数据库mysql
程序员文章站
2024-03-22 20:34:40
...
参考:https://blog.csdn.net/t2080305/article/details/82223415
table:
CREATE TABLE `t_rakeback_stat` (
`USER_ID` varchar(10) NOT NULL COMMENT '邀请人(自己)用户ID',
`USER_NAME` varchar(32) NOT NULL COMMENT '用户名',
`FRIEND_NUM` int(6) NOT NULL COMMENT '好友数量',
`RAKEBACK_AMOUNT_TOTAL` decimal(20,8) NOT NULL COMMENT '返佣收益总数量',
`RAKEBACK_AMOUNT_REMAIN` decimal(20,8) NOT NULL COMMENT '返佣收益剩余数量',
`RAKEBACK_COIN_CODE` tinyint(4) NOT NULL COMMENT '返佣金额币种',
`CREATE_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATE_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`USER_ID`),
KEY `idx_rank` (`RAKEBACK_AMOUNT_TOTAL`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='邀请返佣统计表';
排行榜列表
SELECT temp.userId, temp.userName, temp.rakebackAmountTotal, temp.rank FROM ( SELECT ta.user_id AS userId, ta.user_name AS userName, ta.rakeback_amount_total AS rakebackAmountTotal, @index := @index + 1, @rank := (CASE WHEN @temp_rakeback_amount_total = ta.rakeback_amount_total THEN @rank WHEN @temp_rakeback_amount_total := ta.rakeback_amount_total THEN @index WHEN @temp_rakeback_amount_total = 0 OR @temp_rakeback_amount_total IS NULL THEN @index END) AS rank FROM ( SELECT user_id, user_name, rakeback_amount_total FROM t_rakeback_stat ORDER BY rakeback_amount_total DESC ) AS ta, ( SELECT @rank := 0, @rowtotal := NULL, @index := 0 ) r ) AS temp
推荐阅读
-
mysql 中根据查询结果排名 博客分类: 数据库mysql
-
在MySql中,这四种方法可以避免重复插入数据! 博客分类: mysql数据库
-
in语句查询按in里的顺序返回记录 博客分类: 数据库mysql
-
在MySql中,这四种方法可以避免重复插入数据! 博客分类: mysql数据库
-
mysql 中根据查询结果排名 博客分类: 数据库mysql
-
Mysql_嵌套表查询_查询结果作为子表(临时表) 博客分类: DB_Mysql_Oracle_Informix_SqlServer MySQLOracle
-
hibernate下的根据日期查询 博客分类: mysql HibernateDAO
-
MYSQL的group_concat()函数中实现将多行同一字段数据合并成一个数据 博客分类: 数据库 sqlMySQL
-
jdbcTemplate 查询数据库字段名称,类型方法 博客分类: MySQL mysql
-
如何构建高性能MySQL 博客分类: 数据库 索引MySQL性能查询优化