一个SQL题

题目如图:

模拟题目建的表如下图:

答案:

select t3.id,t3.name,max(t3.score) from (
select t1.* from b t1,(select id,max(score) score from b group by id) t2 where t1.id=t2.id and t1.score<t2.score
) t3 group by t3.id;

时间: 2024-07-31 08:41:07

一个SQL题的相关文章

通过不同的条件组装 一个sql语句

通过不同的条件组装 一个sql语句题目要求:目前需要通过不同会员信息的条件,对会员进行高级查询,这个时候就需要对sql语句的组装工作.需要查询的条件有,会员编号,会员昵称,会员帐号,会员注册时间,会员性别,条件通过GET方式传递给程序,通过任意选择这些条件进行查询,得到相应的结果.参考:会员表为user_bas 及其字段结构:查询条件和数据库字段对应关系:会员编号:id :结构:smallint(6),查询为精确查询(比如:查询编号为1 2的会员)会员昵称:nickname:结构:varchar

一个SQL的几种写法

某天在某技术群看见有人发了这样一个图求助,一看就觉得这题考查的是利用sql行转列 我脑海第一时间就想到用oracle的decode函数来写,但又想到题目没有具体说是哪一种数据库~如果用decode的话,在mysql下是完全不一样的用法(也是因为这次我才知道mysql也有decode方法,但跟oracle的完全不一样,其他数据库暂没研究) 所以我就回复写了这样一个sql 初想的SQL¶ select t1.d,t1.c1 '胜',t2.c2 '负' from (select count(resul

一个sql导致temp表空间爆掉

Buffer sort引发的血案 今天遇到的一个问题,在线系统上,有两张表,test1大概50G,test2大概200G,需要查询出来test1表中部分记录,并且这些记录不存在test2表中.于是就写了一个sql: select t1.* from test1 t1, test2 t2 where t1.col1 = t2.col1(+) and t1.col2 = t2.col2(+) and t1.col3 = t2.col3(+) and t2.col1 is null; 因为是在线系统,

怎样让索引仅仅能被一个SQL使用

有个徒弟问我,要创建一个索引,去优化一个SQL,可是创建了索引之后其它 SQL 也要用 这个索引,其它SQL慢死了.要优化的SQL又快.遇到这样的问题咋搞? 一般遇到这样的问题还是非常少的.处理的方法非常多.我简单的给大家介绍一种方法. 还是直接看我实验操作步骤吧. 在SCOTT账户里面创建一个測试表和一个索引 SQL> create table test as select * from dba_objects; 表已创建. SQL> create index idx_test on tes

一个SQL Server 2008 R2 死锁的问题解决

问题场景:在客户那碰到一个操作卡死的现象 问题解决: 1.如何挂钩是死锁问题:通过代码跟踪,发现是指执行一个SQL语句超时,因此猜想可能是表锁住了 2.如果确认是思索问题:通过SQL发现死锁,以下是相关的SQL select request_session_id SPID,OBJECT_NAME(resource_associated_entity_id) TABLENAME from sys.dm_tran_locks where resource_type='OBJECT' 上面这个SQL是

MyBatis学习6-第一个sql映射findUserById

现在我们通过mybatis开始实现第一个sql查询findUserById: 1.填加映射文件User.xml 2.在mysql-front中测试一下sql语句: 3.开始编写User.xml 其中,namespace为命名空间,对sql进行分类化管理,是一种sql隔离. id:标识sql,将sql封装到mappedStatement对象中,id实际上是statement的id #{}表示一个占位符, parameterType:定义输入到sql中的映射类型.如果参数是简单类型,#{}中的参数名

(关于一个算法题的两点新思路)给你一组字符串 如 {5,2,3,2,4,5,1,2,1,5},让你输出里面出现次数最多且数值最大的一个,出现几次

在网上看到一个算法题,不是很难,搜一下也有解决办法,但是一般都是几层for循环,试着写了下 /** * 给你一组字符串 如 {5,2,3,2,4,5,1,2,1,5},让你输出里面出现次数最多且数值最大的一个,出现几次 * 优点:时间复杂度为O(n) * 缺点:产生一些多余的空间,如 6,7,8没有的数也会分配一个数组空间,但是基本可以忽略 * 限制:需要预先知道最大的值是多少,或者说小于多少,这样才好确定预先分配一个数组长度是多少 */ public static void method1()

一个SQL update语句

需要每隔一段时间选取最老的商户更新时间戳: update DP_Shop set DP_Shop.LastDate = now() where DP_Shop.ShopId in (select ShopId from DP_Shop order by LastDate limit 5); ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 多加一层: u

SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划

我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为复用执行计划的性能比生成执行计划的性能要高很多,所以SqlServer的这一特性可以大大提高Sql语句的执行效率.特别是对于存储过程,因为存储过程的执行计划是在存储过程第一次执行的时候生成的,存储过程的执行计划生成后就会被缓存到SqlServer的执行计划列表中,如果以后存储过程再被执行,那么存储过