数据库应用技术 10-1 sql-sample (15 分)
本题目要求编写SQL语句,检索出每个班级中分数最低的同学id,姓名,分数,班级名称a111
表结构:
create table tb_student (id int not null primary key,name varchar(32)
);
create table tb_score (stu_id int,score int
);
create table tb_class (id int not null,name varchar(32)
);
create table tb_student_class
(id int null,class_id int null,stu_id int null
);
表样例
tb_student
表:
id | name |
---|---|
30 | ddd |
49 | ccc |
51 | aaa |
52 | bbb |
tb_score
表:
stu_id | score |
---|---|
30 | 99 |
49 | 79 |
51 | 80 |
52 | 59 |
tb_class
表:
id | name |
---|---|
1 | class-1 |
2 | class-2 |
3 | class-1 |
4 | class-2 |
tb_student_class
表
id | stu_id | class_id |
---|---|---|
1 | 30 | 1 |
2 | 49 | 2 |
3 | 51 | 1 |
4 | 52 | 2 |
输出样例:
stu_id | stu_name | class_name | score |
---|---|---|---|
51 | aaa | class-1 | 80 |
52 | bbb | class-2 | 59 |
sql版本高的可以使用ROW_NUMBER() over (PARTITION BY tb_class.name ORDER BY tb_score.score ASC)as rn,tb_score.score达到分组排序的目的,但是PTA上的sql应该是5.7,只能用GROUP BY和ORDER BY
SELECTANY_VALUE(stu_id) as stu_id , --any_value()抑制ONLY_FULL_GROUP_BY值被拒绝ANY_VALUE(stu_name) as stu_name , ANY_VALUE(class_name) as class_name , ANY_VALUE(score) as score
FROM
(
SELECTtb_score.stu_id,tb_student.name AS stu_name,tb_class.name AS class_name,tb_score.score
FROMtb_scoreINNER JOIN tb_student_class ON tb_score.stu_id = tb_student_class.stu_idINNER JOIN tb_class ON tb_student_class.class_id = tb_class.idINNER JOIN tb_student ON tb_score.stu_id = tb_student.id
ORDER BYtb_class.name ASC,tb_score.score ASC
LIMIT 100 --不加limit的话order by后每列数据不对应,不知道为什么
)as a
GROUP BYa.class_name
这里有个坑就是tb_class
表的id看起来是和tb_student_class表的id对应,但实际上只有和tb_student_class的class_id对应才是正确答案。
数据库应用技术 10-1 sql-sample (15 分)相关推荐
- SQL语句你会写了吗?一题教你轻松对付数据库期末考试(写SQL语句的分必拿哦)
现有下列几个表,按题目要求写出相关的SQL语句 第一部分: # 1. 查询所在城市为"北京"的所有工程号和工程名. select JNO,JNAME from j where CI ...
- 数据库系统概论(第十章: 数据库恢复技术)
第十章 数据库恢复技术 10.1 事务的基本概念 10.1.1.事务 1.事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位. 2 ...
- 第十章数据库恢复技术
第十章数据库恢复技术 10.1_事务 事务的四个特性:原子性.一致性.隔离性.持续性 10.2_故障的种类 事务内部的故障 系统故障 介质故障 计算机病毒 10.3_恢复的实现技术 转储:动态和静态 ...
- 在数据库技术中脏数据是指_数据库安全关键技术之数据库加密技术
数据库加密作为近年来兴起的数据库安防技术,已经被越来越多的人所重视.这种基于存储层加密的防护方式,不仅可以有效解决数据库明文存储引起的泄密风险,也可以防止来自内部或者外部的入侵及越权访问行为. 从技术 ...
- UI一揽子计划 19 (数据库管理系统、SQL语句、iOS 的数据库实现技术)
一.数据库管理系统 1. 以一定的方式存储在一起; 2. 能为多个用户共享 3. 具有尽可能小的冗余度 4. 与程序彼此独立的数据集合 二.SQL语句 SQlite常用语句 注:SQlite语句 不区 ...
- SqlPackage.exe –使用bacpac和PowerShell或Batch技术自动执行SQL Server数据库还原
Data is the key to your organization's future, but if it's outdated, irrelevant, or hidden then it's ...
- 第10章 数据库恢复技术 | 数据库知识点整理
第10章 数据库恢复技术 了解 数据库的一致性状态 数据库运行中可能产生的故障类型,它们如何影响事务的正常执行,如何破坏数据库数据 数据转储的概念及分类 数据库的镜像功能 掌握 事务的基本概念和事务的 ...
- 因为数据库正在使用,所以无法获得对数据库的独占访问权。 (3101)[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]RES
问题描述: SQL server 数据库还原时,遇到问题. [RES] Database restore start [RES] (Full) [2022-06-27 22:12:15.000] [ ...
- oracle怎么判断逻辑读,如何查看Oracle数据库物理读、逻辑读前10的sql?
概述 今天主要介绍几个sql,可能很多人就收藏一下但很少会去用,所以结合案例来做一下分析,这样就知道在什么场景用了. 下面介绍一下案例. 1.监控分析 从监控发现物理IO读处于比较高的水平,截图如下: ...
- 2008 R2修复光盘_中了后缀.「mr.hacker@tutanota.com」勒索病毒的SQL数据库修复技术
用达思SQL数据库修复软件怎么修复中了后缀.[mr.hacker@tutanota.com]的勒索病毒加密的数据库?(一卡通综合管理平台) 2.33GB的sql数据库被后缀.[mr.hacker@tu ...
最新文章
- Prioritize your work by your title
- mysql user.isd_如何实现MySQL中的用户管理
- POJ 放苹果问题(递归)
- mysql kill_Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
- [html] websocket和http2有什么区别?http2能取代websocket吗?为什么?
- mac识别androidUSB调试
- 2017.6.23 染色 思考记录
- bug10-graphviz.backend.ExecutableNotFound: failed to execute [‘dot‘, ‘-Tpdf‘, ‘-O‘, ‘Source.gv‘]
- 拉勾教育管理系统(前端)
- HTTP长连接和Websocket
- 高大上的PPT表格都是怎样制作完成的
- 超声波测深仪工作原理
- 【计算机视觉】Lecture 28:跟踪简介
- Laravel 5.8 前瞻
- java+ssm基于微信小程序的游泳馆管理系统 uniapp 小程序
- 数据结构题(C语言)----括弧匹配检验(check)
- 关于spring-mybatis整合出现的问题Error creating bean with name ‘sqlSessionFactory‘ defined in class path reso
- 基本:HEX文件格式定义
- Python实现将位图描摹为彩色矢量 svg 图片的源代码,Python实现位图转彩色矢量代码
- krpano 全景图在微信里面被屏蔽的解决办法