Mysql统计排名

MYSQL实现统计排名建表预计


CREATE TABLE `players` (
  `pid` int(2) NOT NULL,
  `name` varchar(50) DEFAULT NULL,
  `age` int(2) DEFAULT NULL,
  `money` int(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入数据

INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('1', 'Samual', '25', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('2', 'Vino', '20', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('3', 'John', '20', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('4', 'Andy', '22', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('5', 'Brian', '21', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('6', 'Dew', '24', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('7', 'Kris', '25', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('8', 'William', '26', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('9', 'George', '23', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('10', 'Peter', '19', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('11', 'Tom', '20', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('12', 'Andre', '20', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('1', 'Samual', '25', '100');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('2', 'Vino', '20', '200');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('3', 'John', '20', '300');
INSERT INTO `test`.`players` (`pid`, `name`, `age`, `money`) VALUES ('4', 'Andy', '22', '400');

按照money 的总金额进行排名

 select t.* ,
case when @preRank = totalmoney then @curRank 
when  @preRank := totalmoney then @curRank := @curRank+1
end as rank
 from (
SELECT  name, sum(money)  as totalmoney
FROM players GROUP BY  name) t,(select @curRank :=0,@preRank:=0)r
ORDER BY totalmoney desc 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值