sql语言,有一个成绩单表,已知学生姓名,如何查询名次?

有一个score表,里面有学生名字name(是唯一的),和成绩score,给定学生姓名,如何返回他的名次呢?请告诉我sql语言怎么实现。如果能知道在CodeIgniter... 有一个score表,里面有学生名字name(是唯一的),和成绩score,给定学生姓名,如何返回他的名次呢?
请告诉我sql语言怎么实现。如果能知道在CodeIgniter里面怎么实现就更好了。
非常感谢!!
我是在PHP里面(Mysql)实现的,里面貌似没有row_id,或者rowid。
展开
 我来答
freechan10
2019-12-24 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.4万
展开全部

1、创建测试表,

create table test_score(name varchar2(20), score number);

2、插入测试数据

insert into test_score values('张三', 85);

insert into test_score values('李四', 90);

insert into test_score values('王二', 95);

insert into test_score values('吴七', 83);

insert into test_score values('李六', 66);

commit;


3、查询表中全量数据,select t.*, rowid from test_score t;

4、编写sql,根据学生姓名,查询学生名词,以学生‘李四’为例,成绩排名第二;  select t.* from (select t.*, rank() over(order by score desc) rk from test_score t) t where t.name = '李四';

hy1397471
2015-12-02 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17152
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

向TA提问 私信TA
展开全部

例成绩单表有字段:学生姓名,名次 

那么要查询同学A的名次,SQL语句可以这样写:

select 学生姓名,名次 from 成绩单表 where 学生姓名 = ‘同学A’
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-16
展开全部
-- 模拟 score 表.
CREATE TABLE score (
  name  varchar(10),
  score INT
);

-- 模拟数据.
INSERT INTO score VALUES('赵小丫',  90);
INSERT INTO score VALUES('钱小丫',  80);
INSERT INTO score VALUES('孙小丫',  70);
INSERT INTO score VALUES('李小丫',  50);
INSERT INTO score VALUES('周小丫',  80);
INSERT INTO score VALUES('吴小丫',  60);
INSERT INTO score VALUES('郑小丫',  70);
INSERT INTO score VALUES('王小丫',  100);


-- 排名不连续的情况:
-- 也就是对于 80分。 钱小丫 和  周小丫 都是 第3名, 没有第4名。 孙小丫为第5名
SELECT
  CASE
    WHEN @AllGrade = score THEN @rank
    ELSE @rank:= @rownum + 1
  END AS RANK,
  @rownum:=@rownum+1 AS NO,
  name,
  @AllGrade:=score AS score
FROM
  (SELECT @rownum:=0) rn,
  (SELECT @rank:=1) rk,
  (SELECT @AllGrade:=0) ag,
  score
ORDER BY
  score DESC;

+------+------+--------+-------+
| RANK | NO   | name   | score |
+------+------+--------+-------+
|    1 |    1 | 王小丫 |   100 |
|    2 |    2 | 赵小丫 |    90 |
|    3 |    3 | 钱小丫 |    80 |
|    3 |    4 | 周小丫 |    80 |
|    5 |    5 | 孙小丫 |    70 |
|    5 |    6 | 郑小丫 |    70 |
|    7 |    7 | 吴小丫 |    60 |
|    8 |    8 | 李小丫 |    50 |
+------+------+--------+-------+
8 rows in set (0.00 sec)


-- 传入姓名, 查询排名的方式:
SELECT
  RANK
FROM
(
SELECT
  CASE
    WHEN @AllGrade = score THEN @rank
    ELSE @rank:= @rownum + 1
  END AS RANK,
  @rownum:=@rownum+1 AS NO,
  name,
  @AllGrade:=score AS score
FROM
  (SELECT @rownum:=0) rn,
  (SELECT @rank:=1) rk,
  (SELECT @AllGrade:=0) ag,
  score
ORDER BY
  score DESC
) subQuery
WHERE
  name = '孙小丫';

+------+
| RANK |
+------+
|    5 |
+------+
1 row in set (0.00 sec)


-----
-- 如果是要求  排名连续
-- 也就是对于 80分。 钱小丫 和  周小丫 都是 第3名, 孙小丫为第4名

SELECT
  CASE
    WHEN @AllGrade = score THEN @rank
    ELSE @rank:= @rank + 1
  END AS RANK,
  @rownum:=@rownum+1 AS NO,
  name,
  @AllGrade:=score AS score
FROM
  (SELECT @rownum:=0) rn,
  (SELECT @rank:=1) rk,
  (SELECT @AllGrade:=0) ag,
  score
ORDER BY
  score DESC;

+------+------+--------+-------+
| RANK | NO   | name   | score |
+------+------+--------+-------+
|    1 |    1 | 王小丫 |   100 |
|    2 |    2 | 赵小丫 |    90 |
|    3 |    3 | 钱小丫 |    80 |
|    3 |    4 | 周小丫 |    80 |
|    4 |    5 | 孙小丫 |    70 |
|    4 |    6 | 郑小丫 |    70 |
|    5 |    7 | 吴小丫 |    60 |
|    6 |    8 | 李小丫 |    50 |
+------+------+--------+-------+
8 rows in set (0.00 sec)



-- 传入姓名, 查询排名的方式: 处理机制参考前面的 子查询处理机制。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bathshawn
2013-07-16 · TA获得超过318个赞
知道答主
回答量:86
采纳率:100%
帮助的人:72.5万
展开全部
楼上回答估计顺序是反的
应该是:select row_id,name,score from 表(Score)where name="XXXXX" order by score desc(最后这个是倒叙排序)
追问
没有row_id这一列啊,我用的mysql,报错:
Unknown column 'row_id' in 'field list'
rowid我也试了,也不存在
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
loveyou苑
推荐于2018-04-19
知道答主
回答量:4
采纳率:0%
帮助的人:3.8万
展开全部
可以利用COUNT函数和SQL的嵌套查询来解决。
select count(name) from score where score >
(select score from score where name='xxx');
上面的SQL语句就是 查询出有多少个学生(名字唯一)的成绩比给定学生好
得到的结果 自然就是名次了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式