只有两个字段用一个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
更多请到这里查看评论
相关推荐
-
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
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查询排名函数实例
在实际开发中经常会遇到计算某个字段的排名的情况 如下表: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语句查询出某个学生的姓名、成绩以及在表中的排名
昨天去面试时遇到一个这样的问题: 有一张成绩表,只有两个字段,姓名和成绩.怎样用一个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(身份证),这里提供两种查询的方法:
随机推荐
- JFreeChart插件实现的折线图效果实例
- Android 中okhttp自定义Interceptor(缓存拦截器)
- 举例讲解JavaScript中将数组元素转换为字符串的方法
- php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
- sqlserver 2000中创建用户的图文方法
- PHP实现mysqli批量执行多条语句的方法示例
- 基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
- android为ListView每个Item上面的按钮添加事件
- 各分区根目录释放shell.exe,autorun.inf 的病毒清除方法
- Android中给按钮同时设置背景和圆角示例代码
- c#数据类型基础
- js和jquery中获取非行间样式
- Thinkphp5结合layer弹窗定制操作结果页面
- 面包屑导航详解
- Java简单实现农夫过河问题示例
- 浅谈Android PathMeasure详解和应用
- Android实现简单的下拉阻尼效应示例代码
- Android 百度地图marker中图片不显示的解决方法(推荐)
- 使用golang获取linux上文件的访问/创建/修改时间
- 浅谈java.util.concurrent包中的线程池和消息队列