每天一道大厂SQL题【Day21】华泰证券真题实战(三)

简介: 每天一道大厂SQL题【Day21】华泰证券真题实战(三)

第21题:

需求列表

2.有表结构及数据如下,请完成相应查询

班级表:class 学生表:student
cid caption sid sname gender class_id
1 三年二班 1 张三 1
2 一年三班 2 李四 1
3 三年一班 3 王五 2
老师表:teacher 课程表:course
tid tname cid cname teacher_id
1 马云 1 生物 1
2 马化腾 2 体育 1
3 俞敏洪 3 物理 2
成绩表:score
sid student_id course_id number
1 1 1 58
2 1 2 68
3 2 2 89
AAA 查询课程2比课程1成绩低的学号

查询课程编号“2”的乘积比课程编号“1”低的所有同学的学号、姓名。

BBB 查询没有学全所有课的学生

查询没有学全所有课的同学的学号、姓名

思路分析

查询课程编号“2”的乘积比课程编号“1”低的所有同学的学号、姓名。

  1. 使用with语句,创建了一个名为t1的临时表,其中包含两个字段:学生id和体育成绩(如果课程id为2),以及生物成绩(如果课程id为1)。同时使用sum函数对成绩进行求和,并使用if函数进行条件判断。
  2. 在t1中使用group by语句对学生id进行分组,并使用having语句筛选出体育成绩小于生物成绩的学生。
  3. 最后使用join语句将t1与student视图进行关联,输出学生id和姓名。

查询没有学全所有课的同学的学号、姓名

  1. 首先使用with语句创建了一个名为t1的临时表,其中包含三个字段:学生id,姓名和选修课程数目。
  2. 在t1中使用left join语句将学生表和成绩表关联,通过学生id进行连接,统计每个学生选修的课程数目。注意使用left join而不是inner join,以便包含选修课程数为0的学生。
  3. 在t1中使用group by语句对学生id和姓名进行分组,以便统计每个学生选修的课程数目。
  4. 然后使用with语句创建了一个名为t2的临时表,其中包含一个字段:所有课程的数目。
  5. 在t2中使用count函数统计了所有课程的数目。
  6. 最后使用join语句将t1与t2进行关联,并使用where语句筛选出选修课程数目小于所有课程数目的学生,输出学生id和姓名。

答案获取

建议你先动脑思考,动手写一写再对照看下答案,如果实在不懂可以点击下方卡片,回复:大厂sql 即可。

参考答案适用HQL,SparkSQL,FlinkSQL,即大数据组件,其他SQL需自行修改。

加技术群讨论

点击下方卡片关注 联系我进群

或者直接私信我进群

文末SQL小技巧

提高SQL功底的思路。

1、造数据。因为有数据支撑,会方便我们根据数据结果去不断调整SQL的写法。

造数据语法既可以create table再insert into,也可以用下面的create temporary view xx as values语句,更简单。

其中create temporary view xx as values语句,SparkSQL语法支持,hive不支持。

2、先将结果表画出来,包括结果字段名有哪些,数据量也画几条。这是分析他要什么。

从源表到结果表,一路可能要走多个步骤,其实就是可能需要多个子查询,过程多就用with as来重构提高可读性。

3、要由简单过度到复杂,不要一下子就写一个很复杂的。

先写简单的select from table…,每个中间步骤都执行打印结果,看是否符合预期, 根据中间结果,进一步调整修饰SQL语句,再执行,直到接近结果表。

4、数据量要小,工具要快,如果用hive,就设置set hive.exec.mode.local.auto=true;如果是SparkSQL,就设置合适的shuffle并行度,set spark.sql.shuffle.partitions=4;

目录
相关文章
|
1月前
|
SQL 关系型数据库 数据库
阿里云数据库 RDS SQL Server版实战【性能优化实践、优点探析】
本文探讨了Amazon RDS SQL Server版在云数据库中的优势,包括高可用性、可扩展性、管理便捷、安全性和成本效益。通过多可用区部署和自动备份,RDS确保数据安全和持久性,并支持自动扩展以适应流量波动。可视化管理界面简化了监控和操作,而数据加密和访问控制等功能保障了安全性。此外,弹性计费模式降低了运维成本。实战应用显示,RDS SQL Server版能有效助力企业在促销高峰期稳定系统并保障数据安全。阿里云的RDS SQL Server版还提供了弹性伸缩、自动备份恢复、安全性和高可用性功能,进一步优化性能和成本控制,并与AWS生态系统无缝集成,支持多种开发语言和框架。
177 2
|
19天前
|
SQL 安全 数据库
精通SQL:数据库查询与管理的实战指南
一、引言 在当今数字化时代,[数据库](https://www.iyxwzx.com/)已成为企业、组织和个人不可或缺的数据[管理](https://www.iyxwzx.com/news/)工具
|
1月前
|
SQL 自然语言处理 数据库
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
NL2SQL实践系列(2):2024最新模型实战效果(Chat2DB-GLM、书生·浦语2、InternLM2-SQL等)以及工业级案例教学
|
1月前
|
SQL Oracle 关系型数据库
数据库SQL语言实战(四)(数据库系统概念第三章练习题)
本文的SQL语言适用的是Oracle数据库与mySQL可能存在略微不同
数据库SQL语言实战(四)(数据库系统概念第三章练习题)
|
1月前
|
SQL 关系型数据库 MySQL
sql性能优化及实战
sql性能优化及实战
29 0
|
1月前
|
SQL 数据库
数据库SQL语言实战(六)
本次实战的重点就在于对表格本身的一些处理,包括复制表格、修改表格结构、修改表格数据
|
1月前
|
SQL Oracle 关系型数据库
数据库SQL语言实战(五)(数据库系统概念第三章练习题)
本文的SQL语言适用的是Oracle数据库与mySQL可能存在略微不同
|
1月前
|
SQL Oracle 关系型数据库
数据库SQL语言实战(三)
本篇文章重点在于SQL中的各种删除操作