阿里云 瑶池数据库的解答一

简介: 阿里云 瑶池数据库的解答一

使用RDS的数据库

登录数据库

RDS数据库的登录

登录成功的界面

需要专门创建账户信息,否则的话是没有办法登录的。

进入之后,会有很多的学习指导

在进行数据集导入数据库的时候,可能会遇到以下的问题:

使用导入数据的方式处理所有的表创建以及表数据的导入处理

试题一的解答思路

题目:现在我们关注的是没门考试有哪些顶尖学生,一门考试的顶尖学生是指一个学生的分数在参加该考试的不同学生中得分排名前三。

编写一个sql查询,找出每个考试中得分最高的考生。

若同一个考生有多条考试记录,则取最高分。

如果存在并列,将并列的考生都列举出来,直到列举的考生达到或超过三人。

以没门考试考试分数从高到低的排序,返回结果集:

解题思路:

第一步:先筛选出来分数的前三个数据:

select  * fROM `testattempt` order by score desc limit 3select  * fROM `testattempt` order by score desc limit 3

第二步:关联查询出来按照分数来查询前三的学生:

select  `test`.`name` ,s.`name` ,tt.`score`  fROM `testattempt` tt

left join `student` s on  tt.`studentId` = s.`id`

LEFT JOIN `test`  on `test`.`id` =tt.`testId`

order by score desc limit 3

第三步:按照每场考试,获取出来关于每场考试中,得分最高的学生:

select  tt1.`testId` ,tt1.`studentId` ,tt1.`score`  fROM `testattempt` tt1

left join (select DISTINCT  `score` ,`studentId`,  `testId` from `testattempt`) tt2

on tt1.`testId` = tt2.`testId`

and tt1.`score` <tt2.`score`

   and tt1.`studentId` =tt2.`studentId`

       group by tt1.`score` ,tt1.`testId`,tt1.`studentId`

       HAVING count(1)<3

      order by testId ,score desc

第四步:需要考虑出来,关于同一个 学生只考试一次的处理;

SELECT t.id, s.studentId, s.score

FROM (

 SELECT

   testId,

   MAX(score) AS max_score

 FROM testattempt

 GROUP BY testId

) ts

INNER JOIN testattempt s ON ts.testId = s.testId AND ts.max_score = s.score

INNER JOIN Test t ON s.testId = t.id

WHERE (

 SELECT COUNT(DISTINCT score)

 FROM testattempt s2

 WHERE s.testId = s2.testId AND s2.score >= s.score

) < 3

ORDER BY  t.id,s.score DESC;

第五步:可以执行的sql语句:

SELECT t.name as Test, st.name as Student, s.score

FROM (

 SELECT

   testId,

   MAX(score) AS max_score

 FROM testattempt

 GROUP BY testId

) ts

INNER JOIN testattempt s ON ts.testId = s.testId AND ts.max_score = s.score

INNER JOIN Test t ON s.testId = t.id

INNER JOIN student st on st.id=s.studentId

WHERE (

 SELECT COUNT(DISTINCT score)

 FROM testattempt s2

 WHERE s.testId = s2.testId AND s2.score >= s.score

) < 3

ORDER BY  t.id,s.score DESC;


最后:

这道题目最大的难点是每个人都有参与多次考试的处理,每次只能获取到该门成绩最大的那个值作为成绩,并且需要取前三名,如果成绩是100、98、96、96、96;意思是这四个人都是前三名,只不过第三个成绩96、与第四个成绩96的成绩是一样的。并列第三名。

相关文章
|
2月前
|
缓存 弹性计算 NoSQL
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
新一期陪跑班开课啦!阿里云专家手把手带你体验高并发下利用云数据库缓存实现极速响应
|
2月前
|
安全 NoSQL 关系型数据库
阿里云数据库:助力企业数字化转型的强大引擎
阿里云数据库:助力企业数字化转型的强大引擎
|
2月前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
2月前
|
人工智能 Cloud Native 关系型数据库
阿里云关系型数据库连续五年蝉联榜首
全球领先的IT市场研究和咨询公司IDC发布了《2023年下半年中国关系型数据库软件市场跟踪报告》,2023年阿里云整体市场份额(公有云+本地部署模式)稳居第一,其中公有云市场份额高达39.2%,自2019年起连续5年蝉联榜首。
|
2月前
|
存储 NoSQL MongoDB
小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态
基于MongoDB灵活模式的特性,小川实现了功能的快速迭代和上线,而数据库侧无需任何更改
|
2月前
|
运维 NoSQL BI
简道云搭载阿里云MongoDB数据库,帮助数以万计企业重构业务系统
通过与MongoDB和阿里云团队的合作,让简道云少走了弯路,保障了线上服务的长期稳定运行,提高了吞吐效率,并相应降低了线上运行成本
|
2月前
|
NoSQL 数据管理 关系型数据库
利用阿里云的尖端数据库解决方案增强游戏数据管理
利用阿里云的尖端数据库解决方案增强游戏数据管理
|
16天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
30 1
|
19天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
32 4
|
25天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
136 1