mysql 分数排名
来源:互联网 发布:软文推广淘宝 编辑:程序博客网 时间:2024/06/05 09:01
表table1
字段1:chengji(成绩) 字段2:paiming(排名)
50 0
80 0
70 0
20 0
90 0
如何用1条MYSQL查询语句,运行后让他们变成:
字段1:chengji(成绩) 字段2:paiming(排名)
50 4
80 2
70 3
20 5
90 1
------Solutions------
/*表结构*/
CREATE TABLE `t1` (
`xingming` char(10) default NULL,
`chengji` decimal(6,2) default NULL,
KEY `chengji` (`chengji`)
) ;
/*数据*/
insert into t1 (xingming,chengji)
values
('张一',50),
('张二',80),
('张三',70),
('张四',20),
('张五',90),
('张六',90),
('张七',70);
/*思路
排名是这样的
先按分数排序
如果分数一样,则并列第几名
分数不一样,则是他的顺序号
用三个变量实现
@chengji 保存成绩
@mingci 保存名次
@shunxu 保存顺序
*/
set @chengji=0;
set @mingci=1;
set @shunxu=0;
/*sql语句*/
select xingming,chengji,mingci
from
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t;
/*查询结果
"张五""90.00""1"
"张六""90.00""1"
"张二""80.00""3"
"张三""70.00""4"
"张七""70.00""4"
"张一""50.00""6"
"张四""20.00""7"
*/
------Solutions------
这个表增加一个字段paiming,
然后用update语句来让paiming字段都增加上数据
/*表结构*/
CREATE TABLE `t1` (
`xingming` char(10) default NULL,
`chengji` decimal(6,2) default NULL,
`mingci` int(3) NOT NULL,
KEY `t1` (xingming,chengji)
) ;
/*数据*/
insert into t1 (xingming,chengji)
values
('张一',50),
('张二',80),
('张三',70),
('张四',20),
('张五',90),
('张六',90),
('张七',70);
/*思路
排名是这样的
先按分数排序
如果分数一样,则并列第几名
分数不一样,则是他的顺序号
用三个变量实现
@chengji 保存成绩
@mingci 保存名次
@shunxu 保存顺序
*/
set @chengji=0;
set @mingci=1;
set @shunxu=0;
/*sql语句*/
update t1,
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t2
set t1.mingci=t2.mingci
WHERE t1.xingming=t2.xingming and t1.chengji=t2.chengji;
select xingming,chengji,mingci from t1 order by mingci desc;
/*查询结果
"张四""20.00""7"
"张一""50.00""6"
"张三""70.00""4"
"张七""70.00""4"
"张二""80.00""3"
"张五""90.00""1"
"张六""90.00""1"
*/
字段1:chengji(成绩) 字段2:paiming(排名)
50 0
80 0
70 0
20 0
90 0
如何用1条MYSQL查询语句,运行后让他们变成:
字段1:chengji(成绩) 字段2:paiming(排名)
50 4
80 2
70 3
20 5
90 1
------Solutions------
/*表结构*/
CREATE TABLE `t1` (
`xingming` char(10) default NULL,
`chengji` decimal(6,2) default NULL,
KEY `chengji` (`chengji`)
) ;
/*数据*/
insert into t1 (xingming,chengji)
values
('张一',50),
('张二',80),
('张三',70),
('张四',20),
('张五',90),
('张六',90),
('张七',70);
/*思路
排名是这样的
先按分数排序
如果分数一样,则并列第几名
分数不一样,则是他的顺序号
用三个变量实现
@chengji 保存成绩
@mingci 保存名次
@shunxu 保存顺序
*/
set @chengji=0;
set @mingci=1;
set @shunxu=0;
/*sql语句*/
select xingming,chengji,mingci
from
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t;
/*查询结果
"张五""90.00""1"
"张六""90.00""1"
"张二""80.00""3"
"张三""70.00""4"
"张七""70.00""4"
"张一""50.00""6"
"张四""20.00""7"
*/
------Solutions------
这个表增加一个字段paiming,
然后用update语句来让paiming字段都增加上数据
/*表结构*/
CREATE TABLE `t1` (
`xingming` char(10) default NULL,
`chengji` decimal(6,2) default NULL,
`mingci` int(3) NOT NULL,
KEY `t1` (xingming,chengji)
) ;
/*数据*/
insert into t1 (xingming,chengji)
values
('张一',50),
('张二',80),
('张三',70),
('张四',20),
('张五',90),
('张六',90),
('张七',70);
/*思路
排名是这样的
先按分数排序
如果分数一样,则并列第几名
分数不一样,则是他的顺序号
用三个变量实现
@chengji 保存成绩
@mingci 保存名次
@shunxu 保存顺序
*/
set @chengji=0;
set @mingci=1;
set @shunxu=0;
/*sql语句*/
update t1,
(select xingming,chengji,
@shunxu:=@shunxu+1,
if(chengji=@chengji,@mingci,@mingci:=@shunxu) as mingci,
@chengji:=chengji
from t1 order by chengji desc) as t2
set t1.mingci=t2.mingci
WHERE t1.xingming=t2.xingming and t1.chengji=t2.chengji;
select xingming,chengji,mingci from t1 order by mingci desc;
/*查询结果
"张四""20.00""7"
"张一""50.00""6"
"张三""70.00""4"
"张七""70.00""4"
"张二""80.00""3"
"张五""90.00""1"
"张六""90.00""1"
*/
阅读全文
0 0
- mysql 分数排名
- mysql的分数排名处理
- mysql 分数排名,更新表
- SOJ.分数排名查询
- 分数排名 Rank Scores
- 506. Relative Ranks | 分数排名
- mysql 排名
- MYsql 排名
- mysql 排名
- mysql排名
- 成绩处理(按分数排名)
- 在Excel中对分数进行排名
- 摘抄:mysql 排名
- mysql数据库排名
- mysql 根据字段排名
- MySql查询排名信息
- mysql查询排名
- mysql非占位排名
- OpenGTS的介绍与安装
- android之SlidingMenu简单实现侧滑菜单
- c#增加日志类
- php连接及读取和写入mysql数据库的常用代码
- mysql索引总结----mysql 索引类型以及创建
- mysql 分数排名
- 使用maven执行testng特定组时,报错Nullpointer
- (4)按从小到大的顺序排列数组中的元素
- Leetcode Balanced Binary Tree
- 基于视窗的自适应网站
- 2017-06-27 每日一记 myeclipse里的代码折叠
- CRC校验
- App 扫描二维码登陆网站
- C语言的函数调用约定(stdcall+cdecl+thiscall+fastcall)