sql-50练习题0-5

sql练习题0-5题

  • 前言
  • 数据库表结构介绍
    • 学生表
    • 课程表
    • 成绩表
    • 教师表
  • 0-1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数
  • 0-2查询"01"课程比"02"课程成绩小的学生的信息及课程分数
  • 0-3查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩
  • 0-4 查询平均成绩小于等于60分的同学的学生编号和学生姓名和平均成绩
  • 0-5 查询所有同学的学生编号,学生姓名,选课总数,所有课程的总成绩
    • 特别情况

前言

记录一下最近写过的sql的一些记录,从这篇开始每天更新5个题目,sql真的非常灵活,一个题目可能有很多很多种解法,我记录的只是我自己的一个解题思路,如果大家有更好的不同解法欢迎在评论区一起探讨
ps:有些题可能解法会重复,比如求大于,我们下一个题可能是求小于,大家如果第一遍没有做出来,看了我写的之后有了思路,可以试一下反面的解法。

数据库表结构介绍

学生表

在这里插入图片描述

课程表

在这里插入图片描述

成绩表

在这里插入图片描述

教师表

在这里插入图片描述

0-1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数

写sql之前先分析,需要用到的表以及函数
student,score两张表
简单分析一下这个sql,因为01课程和02课程在同一个字段,所以我的思路是采用自连接来处理

SELECT
	c.*, 
	a.s_score score1,
	b.s_score score2
FROM
	score a,
	score b,
	student c
WHERE
	a.c_id = '1'
AND b.c_id = '2'
AND a.s_id = b.s_id
AND c.s_id = b.s_id
AND a.s_score > b.s_score;
	
	

结果如下:

在这里插入图片描述

0-2查询"01"课程比"02"课程成绩小的学生的信息及课程分数

同样的思路,再写一遍,巩固一下

SELECT
	c.*, 
	a.s_score score1,
	b.s_score score2
FROM
	score a,
	score b,
	student c
WHERE
	a.c_id = '1'
AND b.c_id = '2'
AND a.s_id = b.s_id
AND c.s_id = b.s_id
AND a.s_score < b.s_score;

结果如下:
在这里插入图片描述

0-3查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩

需要用的表为student,score
题目需要查询到学生姓名,需要利用子查询
函数为age求平均值函数
需要分组

SELECT
	b.s_id,
	(
		SELECT
			s.s_name
		FROM
			student s
		WHERE
			b.s_id = s.s_id
	) s_name,
	AVG(b.s_score) avg_score
FROM
	score b
GROUP BY
	b.s_id
HAVING
	AVG(b.s_score) >= 60

结果如下:
在这里插入图片描述

0-4 查询平均成绩小于等于60分的同学的学生编号和学生姓名和平均成绩

思路和上面一模一样

SELECT
	a.s_id,
	(
		SELECT
			s.s_name
		FROM
			student s
		WHERE
			a.s_id = s.s_id
	),
	avg(a.s_score)
FROM
	score a
GROUP BY
	a.s_id
HAVING
	avg(a.s_score) <= 60;

结果如下
在这里插入图片描述

0-5 查询所有同学的学生编号,学生姓名,选课总数,所有课程的总成绩

从题目的意思可以看出来,我们需要两个表student,score
用到的函数为,count,sum
和上一个题的思路其实很像
ps:我个人比较喜欢子查询的方式,其实很多人比较喜欢用内连接,其实没有啥本质上区别,看个人习惯吧

子查询:
SELECT
	s.s_id,
	(
		SELECT
			a.s_name
		FROM
			student a
		WHERE
			a.s_id=s.s_id
	),
	COUNT(s.c_id),
	SUM(s.s_score)
FROM
	score s
GROUP BY
	s.s_id;
显式内连接:

SELECT
	a.s_id,
	s.s_name,
	COUNT(a.c_id),
	SUM(a.s_score)
FROM
	score a
INNER JOIN student s ON s.s_id = a.s_id
GROUP BY
	a.s_id;


结果如下:
在这里插入图片描述

特别情况

不知道有没有细心的小伙伴发现,我们这张成绩表中缺少id为8的同学的成绩,可能因为某些情况缺考了导致我们在上面的查询中也查不到她的信息,那么如果我们也需要将他的信息查询出来应该如何做呢?

student中有的数据而score中没有,可以使用外连接来做

SELECT
	s.s_id,
	s.s_name,
	COUNT(a.c_id) count_cid,
	IFNULL(SUM(a.s_score), 0) sum_score
FROM
	score a
RIGHT JOIN student s ON s.s_id = a.s_id
GROUP BY
	a.s_id
ORDER BY
	s_id ASC;

结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/107952.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ETL工具Kettle

1 Kettle的基本概念 一个数据抽取过程&#xff0c;主要包括创建一个作业&#xff08;Job&#xff09;&#xff0c;每个作业由一个或多个作业项&#xff08;Job Entry&#xff09;和连接作业项的作业跳&#xff08;Job Hop&#xff09;组成。每个作业项可以是一个转换&#xff…

RGB-T Salient Object Detection via Fusing Multi-Level CNN Features

ADFC means ‘adjacent-depth feature combination’&#xff0c;MGF means ‘multi-branch group fusion’&#xff0c;JCSA means ‘joint channel-spatial attention’&#xff0c;JABMP means ‘joint attention guided bi-directional message passing’ 作者未提供代…

openpnp - src - 配置文件载入过程的初步分析

文章目录 openpnp - src - 配置文件载入过程的初步分析概述笔记自己编译用的git版本报错截图问题1 - 怎么在调试状态下, 定位到抛异常的第一现场?结合单步调试找到的现场, 来分析报错的原因openpnp配置文件读取的流程END openpnp - src - 配置文件载入过程的初步分析 概述 从…

LVS+keepalive高可用集群

keepalive简介 keepalive为LVS应用延伸的高可用服务。lvs的调度器无法做高可用。但keepalive不是为lvs专门集群服务的&#xff0c;也可以为其他的的代理服务器做高可用。 keepalive在lvs的高可用集群&#xff0c;主调度器和备调度器(可以有多个) 一主两备或一主一备。 VRRP: k…

[红蓝攻防]MDOG(全新UI重制版)为Xss跨站而生,数据共享,表单劫持,URL重定向

说明 功能Cookie窃取表单劫持(钓鱼账密)重定向流量劫持多平台数据推送钉钉数据推送 运行窗口 ./dist目录下已生成exe文件,双击打开 Cookie窃取 点击运行服务,复制以上的payload,payload怎么变形那么你可已去混淆 payload在页面执行 受害者访问存在xss漏洞的页面时受到攻击,…

python实验2 π的计算

π的计算 1. 圆周率的介绍2. BBP公式计算圆周率3. 蒙特卡洛方法计算π 1. 圆周率的介绍 圆周率π自古就是人们计算的问题&#xff0c;π到底是什么&#xff0c;圆的周长与直径的比值或者是面积与半径的平方之比&#xff0c;或者是使sinx0的最小正数x。所以每一种定义每一种理解…

NSSCTF web刷题记录3

文章目录 [护网杯 2018]easy_tornado[NSSRound#V Team]PYRCE方法一 cp命令方法二 tar命令 [CISCN 2019华东南]Web4[CISCN 2023 华北]ez_date[GWCTF 2019]你的名字[GKCTF 2020]ez三剑客-easynode [护网杯 2018]easy_tornado 打开题目&#xff0c;发现有三个链接&#xff0c;分别…

【Effective C++】

Effective C 文章目录 Effective C一、让自己习惯C条款01&#xff1a;视C为一个语言联邦条款02&#xff1a;尽量以const&#xff0c;enum&#xff0c;inline代替#define的使用条款03&#xff1a;尽可能使用const条款04&#xff1a;确定对象被使用前已先被初始化 二、构造/析构/…

Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(中)

Flutter笔记 完全基于Flutter绘图技术绘制一个精美的Dart语言吉祥物Dash&#xff08;中&#xff09; 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://…

C/C++晶晶赴约会 2020年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C晶晶赴约会 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C晶晶赴约会 2020年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 晶晶的朋友贝贝约晶晶下周一起去看展览&#xff0…

25.2 MySQL 运算符

1. 伪表 在MySQL中, DUAL是一个特殊的单行, 单列的虚拟表, 主要用于在SELECT语句中计算表达式或执行函数, 而不需要从实际的数据表中检索数据. 使用DUAL的原因主要有以下几点:* 1. 简化计算: 通过在SELECT语句中使用DUAL, 可以方便地计算表达式或执行函数, 而无需创建临时表或…

AJAX原理及介绍

文章目录 AJAX&#xff08;Asynchronous Javascript And Xml&#xff09;传统请求及缺点AJAX概述XMLHttpRequest对象AJAX GET请求AJAX GET请求的缓存问题AJAX POST请求基于JSON的数据交换基于XML的数据交换AJAX乱码问题AJAX的异步与同步AJAX代码封装AJAX实现省市联动AJAX跨域问…

磁盘的结构(磁道,扇区,盘面,柱面,物理地址)

目录 1.磁盘、磁道、扇区的概念1.磁盘2.磁道3.扇区 2.如何在磁盘中读/写数据3.盘面、柱面的概念4.磁盘的物理地址1.根据地址读取一个“块” 5.磁盘的分类1.活动头磁道2.固定头磁盘3.根据盘片是否可更换 1.磁盘、磁道、扇区的概念 1.磁盘 磁盘的表面由一些磁性物质组成&#xf…

打破尺寸记录!荷兰QuTech研发16量子点阵列新技术

承载16个量子点交叉条阵列的量子芯片&#xff0c;可无缝集成到棋盘图案&#xff08;图片来源&#xff1a;网络&#xff09; 由荷兰代尔夫特理工大学(TU Delft)和荷兰应用科学研究组织(TNO)组建的荷兰量子计算研究中心QuTech的研究人员开发了一种用相对较少的控制线来控制大量量…

双向链表的初步练习

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇: Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”…

Redis进军磁盘存储

目录 1、对抗价格优势&#xff1a;纳入磁盘&#xff0c;降低成本&#xff1f; 2、Redis的野心&#xff1a;无敌是多么寂寞&#xff0c;所以我们要开新地图 3、开发者异议&#xff1a;他们正在偏离我们选择Redis的初衷 4、结语&#xff1a;性能为王&#xff0c;但绝不甘于只…

Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (四)

这篇博客是之前文章&#xff1a; Elasticsearch&#xff1a;使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation &#xff08;一&#xff09;Elasticsearch&#xff1a;使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation &#xff08;二&a…

ROS自学笔记十八:ModuleNotFoundError: No module named ‘serial‘

出现上述错误&#xff0c;则需要安装serial功能包 第一步&#xff1a;输入 sudo apt install python3-pip 第二步&#xff1a;输入 pip install pyserial

List 3.5 详解原码、反码、补码

前言 欢迎来到我的博客&#xff0c;我是雨空集&#xff08;全网同名&#xff09;&#xff0c;无论你是无意中发现我&#xff0c;还是有意搜索而来&#xff0c;我都感到荣幸。这里是一个分享知识、交流想法的平台&#xff0c;我希望我的博客能给你带来帮助和启发。如果你喜欢我…

记一次线程爆满导致服务器崩溃的问题排查

记一次线程爆满导致服务器崩溃的问题排查 重启服务器 重启后&#xff0c;ssh连接发现下面问题 fork faild:Cannot allocate memory 以为是内存满了 于是&#xff0c;free -h,查看内存情况&#xff0c;还有&#xff0c;观察一段时间后&#xff0c;内存没多大变化 修改…