只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名

昨天去面试时遇到一个这样的问题:

有一张成绩表,只有两个字段,姓名和成绩。怎样用一个sql语句查询出某个学生的姓名,成绩以及在表中的排名?
一时间我也想不出具体实现,我就提了两种思路:一种是通过join关联一个查询出他排名的sql语句;一种是通过group by来实现。
回答得连自己都觉得有点心虚。请问大家如何实现呢?
假设:表名字为Course,两个字段分别为name和score

实现语句:

SELECT 学生,成绩,
(SELECT COUNT(*) FROM 表 WHERE a.成绩<=成绩) AS 排名
FROM 表 AS a

方法二:

declare @Course table(name varchar(100),cj int)
insert into @Course
select 'a',99
union all
select 'b',66
union all
select 'c',88
select * from (
select (select 1+count(name) from @Course where cj>t.cj) mc,name,cj
from @Course t
) tem
where name='b'

如果有成绩相同的记录的时候,goodspeed的语句确实有一些瑕疵,但是我根据他的语句稍微修改了一下就很完美了。

SELECT name,score,
(SELECT COUNT(*)+1 FROM course WHERE a.score<score) AS sort
FROM course AS a order by sort

更多请到这里查看评论

(0)

相关推荐

  • MySQL中给自定义的字段查询结果添加排名的方法

    我正在用 MySQL 客户端的时候,突然想到如果可以给查询结果添加排名该多好啊,然后就找到了一个简单的解决办法. 下面是一个示例表的数据:  然后我们要根据 Roll_No 字段进行排序并给出排名,我们首先必须定义一个初始值为0的变量,然后在查询结果中使用这个变量. 如下面的代码: SET @counter=0; SELECT @counter:=@counter+1 AS Rank,LastName,Roll_no as Roll FROM Students ORDER BY Roll_ 执行

  • SQL查询排名函数实例

    在实际开发中经常会遇到计算某个字段的排名的情况 如下表:totak_sales 现在又如此要求:按sales的逆序排序,要求添加一个sales_rank字段,显示排名顺序 方法: 复制代码 代码如下: SELECT a1.Name, a1.Sales, COUNT(a2.sales) Sales_Rank FROM Total_Sales a1, Total_Sales a2 WHERE a1.Sales <= a2.Sales or (a1.Sales=a2.Sales and a1.Name

  • 查询数据排名情况SQL

    1/准备测试数据 ---------------------------------------------------------------------------------create table t1(c1 integer,c2 integer,c3 integer); insert into t1 values(1,2,3) insert into t1 values(1,8,4)insert into t1 values(1,4,4) insert into t1 values(1

  • 只有两个字段用一个sql语句查询出某个学生的姓名、成绩以及在表中的排名

    昨天去面试时遇到一个这样的问题: 有一张成绩表,只有两个字段,姓名和成绩.怎样用一个sql语句查询出某个学生的姓名,成绩以及在表中的排名? 一时间我也想不出具体实现,我就提了两种思路:一种是通过join关联一个查询出他排名的sql语句:一种是通过group by来实现. 回答得连自己都觉得有点心虚.请问大家如何实现呢? 假设:表名字为Course,两个字段分别为name和score 实现语句: SELECT 学生,成绩, (SELECT COUNT(*) FROM 表 WHERE a.成绩<=成

  • 复制数据库表中两个字段数据的SQL语句

    复制数据库表中两个字段数据的SQL语句 今天为表新添加一个字段,但又想与表中的另一个字段值相同,由于数据过多想通过sql语句实现,经测试下面的这句话确实很好用. 复制代码 代码如下: update jb51_temp set B=A jb51_temp 代表表明 A是有数值的字段,B是新添加的字段 ,记住空值表放到前面,如果set a=b,那么你的数值都为空了,就麻烦了,建议操作前备份数据库. 如何将一个字段里的值复制添加到另一个字段中 比如,有二个字段A和B,A字段是值是"我",B字

  • 使用tp框架和SQL语句查询数据表中的某字段包含某值

    有时我们需要查询某个字段是否包含某值时,通常用like进行模糊查询,但对于一些要求比较准确的查询时(例如:微信公众号的关键字回复匹配查询)就需要用到MySQL的 find_in_set()函数: 以下是用find_in_set()函数写的sq查询l语句示例: $keyword = '你好'; $sql = "select * from table_name where find_in_set('".$keyword"',msg_keyword) and msg_active

  • 使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名

    MySQL中查询所有数据库名和表名 查询所有数据库 show databases; 查询指定数据库中所有表名 select table_name from information_schema.tables where table_schema='database_name' and table_type='base table'; 查询指定表中的所有字段名 select column_name from information_schema.columns where table_schema

  • sql语句查询数据库中的表名/列名/主键/自动增长值实例

    sql语句查询数据库中的表名/列名/主键/自动增长值 ----查询数据库中用户创建的表 ----jsj01 为数据库名 select name tablename from jsj01..sysobjects where type='U' and name not in ('dtproperties') --查询表里的字段信息 ---docs为表名 ---- select * from syscolumns where id = object_id('docs') ----查询数据库中所有类型

  • 一条SQL语句查询多个数据库

    需求:一条SQL语句从多个数据库查询出相关联的结果,输出到客户端 调查:spring框架可以配置多数据源:sql也可以将多个数据库附加到一个主数据库下 解决办法:用ATTACH DATABASE语句将多个库添加到主库下,实现功能 语法: ATTACH DATABASE 'DatabaseName' As 'Alias-Name'; 例子: ATTACH DATABASE 'C:\Users\Administrator\Desktop\sqlite_data.sq3' As 'sd'; 总结 以上

  • Laravel 使用查询构造器配合原生sql语句查询的例子

    首先说一下本人使用的版本: 5.5 在很多复杂查询时, 往往需要原生语句进行查询, 在 laravel 中, 我们可以这样使用原生查询 $user = DB::select('select * from users where id= ?', [1]) 查询构建器 https://laravel-china.org/docs/laravel/5.5/queries#where-clauses $sql = '(FROM table_name1 LEFT JOIN table_name2 ON t

  • mysqli多查询特性 实现多条sql语句查询

    mysqli相对于mysql有很多优势,建议大家使用,如果没有了解,可以查看mysql的基础教程: mysqli连接数据库 和 mysqli预处理prepare使用 .不仅如此,mysqli更是支持多查询特性,看下面这段php代码: 复制代码 代码如下: <?php $mysqli = new mysqli("localhost","root","","new"); $mysqli->query("set

  • 送给搞采集的兄弟一个sql语句

    刚刚采集了一个下午,突然发现发现在title字段里多采集了一些字符进来,并且这些字符都一样的.采集的时候多采集了一个<img src="images/hot.gif">,虽说这几个字符不占多少空间,也不是非常不爽.但是生长首页的时候出了大问题,显示不了.我那就郁闷咯.于是就想办法解决.首先,我尝试通过直接进入dedecms一条条修改记录,但是我的天啊,3000多数据,这样一条条改下来,我还不如自己去人肉更新呢.实在太痛苦了.实在不行,我就干脆从最根源入手,直接修改数据库.于

  • 用SQL语句查询数据库中某一字段下相同值的记录方法

    今天接到一任务,有一张学生信息表(Excel表),里面有一万多条记录,现在要把这张表导入到数据库中,并设置学生学号为主键,但是现在这张表中的学生学号有重复的记录,我必须先找出这些重复的记录,然后再进行筛选,经过研究问题终于得到解决.      以上问题实际上就是查询数据库表中某一字段值重复的记录,这里省略如何将Excel表导入到数据库步骤,只讨论用SQL查询数据库中某一字段下相同值的记录方法. 现在假设数据库表名为student,里面有字段Sno(学号),ID(身份证),这里提供两种查询的方法:

随机推荐