当前位置: 首页 > news >正文

MySQL数据库 - 复杂查询(一)

一个不知名大学生,江湖人称菜狗
original author: Jacky Li
Email : 3435673055@qq.com

Time of completion:2024.03.27
Last edited: 2024.03.27

目录

MySQL数据库 - 复杂查询(一)

第1关:交换工资

任务描述

相关知识

编程要求

测试说明

代码如下:

第2关:换座位

任务描述

相关知识

编程要求

测试说明

代码如下:

第3关:分数排名

任务描述

相关知识

编程要求

测试说明

代码如下:

第4关:体育馆的人流量

任务描述

相关知识

编程要求

测试说明

代码如下:

第5关:统计总成绩

任务描述

相关知识

编程要求

测试说明

代码如下:

作者有言


MySQL数据库 - 复杂查询(一)

第1关:交换工资

任务描述

本关任务:给定一张 tb_Salary 表,如下所示,有 m = 男性f = 女性的值。交换所有的 fm 值(例如,将所有 f 值更改为 m,反之亦然)。

idnamesexsalary
1Elonf7000
2Donnyf8000
3Careym6000
4Karinf9000
5Larisam5500
6Soram500

要求只使用一句更新update语句,且不允许含有任何select语句完成任务。

相关知识

编程要求

根据提示并仔细阅读右侧代码,在Begin - End区域内进行代码补充。

提示

可能需要使用到 CASE 函数或 IF 函数,使用方法如下实例:

  1. SELECT
  2. case ###如果
  3. when sex='1' then '男' ###sex='1',则返回值'男'
  4. when sex='2' then '女' ###sex='2',则返回值'女'
  5. else '其他' ###其他的返回'其他’
  6. end ###结束
  7. from sys_user ###整体理解: 在sys_user表中如果sex='1',则返回值'男'如果sex='2',则返回值'女' 否则返回'其他’
  1. select if(sex='1','男','女') as sex from sys_user; ###如果sex='1'则返回值'男' 否则返回值为'女'
测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

预期输出:

  1. +----+--------+-----+--------+
  2. | id | name | sex | salary |
  3. +----+--------+-----+--------+
  4. | 1 | Elon | m | 7000 |
  5. | 2 | Donny | m | 8000 |
  6. | 3 | Carey | f | 6000 |
  7. | 4 | karin | m | 9000 |
  8. | 5 | Larisa | f | 5500 |
  9. | 6 | Sora | f | 500 |
  10. +----+--------+-----+--------+

代码如下:

#请在此添加实现代码
########## Begin ##########
-- update tb_Salary set sex = if(sex = 'f','m','f');
update tb_Salary set sex = case when sex= 'm' then'f' else'm' end;
########## End ##########

第2关:换座位

任务描述

本关任务:改变相邻俩学生的座位。

小美是一所中学的信息科技老师,她有一张 tb_Seat座位表,平时用来储存学生名字和与他们相对应的座位 id

tb_Seat表结构数据如下:

idname
1Elon
2Donny
3Carey
4Karin
5Larisa

现在小美想改变相邻俩学生的座位(若学生人数为奇数,则无需改变最后一位同学的座位),现在需要你编写SQL输出小美想要的的结果。

相关知识

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

预期输出:

  1. id name
  2. 1 Donny
  3. 2 Elon
  4. 3 Karin
  5. 4 Carey
  6. 5 Larisa

代码如下:

#请在此添加实现代码########## Begin #########
-- select
--     case 
--     when id%2=0 then id-1 
--     else (case when id=(select max(id) from tb_Seat) then id else id+1 end
--         ) end
--     as id, name
-- from tb_Seat order by id;
SELECT 
CASE 
WHEN MOD(id,2)=1 AND id!=(SELECT MAX(id) FROM tb_Seat) THEN id+1
WHEN MOD(id,2)=0 THEN id-1 
ELSE id 
END 
AS id,name FROM tb_Seat ORDER BY id;-- SELECT IF(id%2=0,id-1,IF(id=5,id,id+1)) AS id,name 
-- FROM tb_Seat  ORDER BY id;
########## End ##########

第3关:分数排名

任务描述

本关任务:编写SQL查询来实现二种排名方式的分数排名。

score表结构信息如下:

IdScore
13.52
23.65
34.23
43.85
54.23
63.65

如果两个分数相同,则两个分数排名(Rank)相同。

情况一:平分后的下一个名次是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。例:1、1、2、3、4、4。

情况二:排名是非连续的。例:1、1、1、4、4、6。

相关知识

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

代码如下:

#请在此添加实现代码########## Begin ##########
select Score,(select count(distinct Score) from score as s2 where s2.Score>=s1.Score) as Rank
from score as s1 order by Score desc;
select Score,(select count(Score)+1 from score as s2 where s2.Score>s1.Score) as Rank
from score as s1 order by Score desc;########## End ##########

第4关:体育馆的人流量

任务描述

本关任务:某市建了一个新的体育馆,每日人流量信息被记录在gymnasium表中:序号 (id)、日期 (date)、 人流量 (visitors_flow)。

请编写一个查询语句,找出人流量处于高峰的记录 id、日期 date 和人流量 visitors_flow,其中高峰定义为前后连续三天人流量均不少于 100。

gymnasium表结构数据如下:

iddatevisitors_flow
12019-01-0158
22019-01-02110
32019-01-03123
42019-01-0467
52019-01-05168
62019-01-061352
72019-01-07382
82019-01-08326
92019-01-0999

提示:每天只有一行记录,日期随着 id 的增加而增加。

相关知识

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

预期输出:

  1. +----+------------+---------------+
  2. | id | date | visitors_flow |
  3. +----+------------+---------------+
  4. | 5 | 2019-01-05 | 168 |
  5. | 6 | 2019-01-06 | 1352 |
  6. | 7 | 2019-01-07 | 382 |
  7. | 8 | 2019-01-08 | 326 |
  8. +----+------------+---------------+

代码如下:

#请在此添加实现代码########## Begin ##########
select distinct a.*
from gymnasium a,gymnasium b,gymnasium c
where a.visitors_flow >= 100 and b.visitors_flow >= 100 and c.visitors_flow >= 100 and((a.id+1 = b.id and b.id+1 = c.id) or(a.id-1 = b.id and a.id+1 = c.id) or(a.id-1 = c.id and a.id+1 = b.id) or(a.id-2 = b.id and a.id-1 = c.id) or(a.id-1 = b.id and a.id-2 = c.id))
order by a.id########## End ##########

第5关:统计总成绩

任务描述

本关任务:计算每个班的语文总成绩和数学总成绩,其中低于 60 分的成绩不记入总成绩。

tb_score结构数据:

namechinesemaths
A8998
B9989
C5566
D8866
E5566
F8899

tb_class表结构数据:

stunameclassname
AC1
BC2
CC3
DC2
EC1
FC3
相关知识

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

预期输出:

  1. +-----------+---------+-------+
  2. | classname | chinese | maths |
  3. +-----------+---------+-------+
  4. | C1 | 89 | 164 |
  5. | C2 | 187 | 155 |
  6. | C3 | 88 | 165 |
  7. +-----------+---------+-------+

代码如下:

#请在此添加实现代码
########## Begin ##########
select classname,sum(if(chinese>=60,chinese,0)) chinese,sum(if(maths>=60,maths,0)) maths from tb_score a,tb_class b where a.name=b.stuname group by b.classname;########## End ##########

作者有言

如果感觉博主讲的对您有用,请点个关注支持一下吧,将会对此类问题持续更新……

相关文章:

  • 二叉树|701.二叉搜索树中的插入操作
  • Springboot项目之mybatis-plus多容器分布式部署id重复问题之源码解析
  • 【生成对抗网络GAN】一篇文章讲透~
  • 《无名之辈》天涯镖局攻略:高效拉镖窍门!
  • Codeup_1132:问题 A: 最长公共子序列
  • 大话设计模式之模板方法模式
  • 云原生最佳实践系列 4:基于 MSE 和 SAE 的微服务部署与压测
  • 你的 Python 代码需要解释一下了!
  • ideaSSM 人才引进管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目
  • 医院同步时钟系统的耐用性与可靠性
  • 【数据分享】1929-2023年全球站点的逐日平均海平面压力(Shp\Excel\免费获取)
  • git提交和回退
  • 【前端】Layui的表格常用功能,表单提交事件,表格下拉按钮点击事件,表格外的按钮点击事件
  • dfs (蓝桥备赛)
  • 01.ArcEngine中IField的属性详细描述
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 2017-09-12 前端日报
  • CentOS7简单部署NFS
  • Django 博客开发教程 16 - 统计文章阅读量
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • java2019面试题北京
  • JS+CSS实现数字滚动
  • Node + FFmpeg 实现Canvas动画导出视频
  • Python实现BT种子转化为磁力链接【实战】
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • VUE es6技巧写法(持续更新中~~~)
  • 二维平面内的碰撞检测【一】
  • 分享一份非常强势的Android面试题
  • 高程读书笔记 第六章 面向对象程序设计
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 计算机常识 - 收藏集 - 掘金
  • 排序算法学习笔记
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 我有几个粽子,和一个故事
  • 小程序开发中的那些坑
  • UI设计初学者应该如何入门?
  • 第二十章:异步和文件I/O.(二十三)
  • #ifdef 的技巧用法
  • #Linux(帮助手册)
  • #控制台大学课堂点名问题_课堂随机点名
  • (+4)2.2UML建模图
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二十四)Flask之flask-session组件
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (蓝桥杯每日一题)love
  • (十六)一篇文章学会Java的常用API
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)树状数组
  • *上位机的定义
  • .h头文件 .lib动态链接库文件 .dll 动态链接库