sql-50练习题6-10

sql练习题6-10题

  • 前言
  • 数据库表结构介绍
    • 学生表
    • 课程表
    • 成绩表
    • 教师表
  • 0-6 查询"李"姓老师的数量
  • 0-7 查询学过"李四"老师授课的同学的信息
  • 0-8 查询没学过"李四"老师授课的同学的信息
  • 0-9 查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息
  • 0-10 查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息

前言

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

数据库表结构介绍

学生表

在这里插入图片描述

课程表

在这里插入图片描述

成绩表

在这里插入图片描述

教师表

在这里插入图片描述

0-6 查询"李"姓老师的数量

首先读题,关键字 老师,数量,确定好我们需要的东西
表:teacher
函数count()

SELECTcount(t.t_name) count_li
FROMteacher t
WHEREt.t_name LIKE '李%';

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

0-7 查询学过"李四"老师授课的同学的信息

首先分析一下,我们需要通过name去teacher表中查询到李四老师的t_id,通过t_id再去课程表中查到c_id,有了c_id就可以去成绩表中查到s_id,然后再去student里面查学生信息
表:teacher,course,score,student

SELECT
b.*
from teacher t,course c,score a,student b
where t.t_name='李四'
AND   c.t_id=t.t_id
AND   a.c_id=c.c_id
AND   b.s_id=a.s_id;

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

0-8 查询没学过"李四"老师授课的同学的信息

上个题,其实我们是通过找到score表中的学过李四老师课程的学生的id,然后在student表中利用id找出对应符合要求的学生,这个题其实相反,我们把剩余的id取出来其实就是答案

SELECTb.*
FROMstudent b
WHEREb.s_id NOT IN (SELECTa.s_idFROMteacher t,course c,score aWHEREt.t_name = '李四'AND c.t_id = t.t_idAND a.c_id = c.c_id);

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

0-9 查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息

分析一下,感觉题目就很绕,读着很烦,白话说就是:查询学过语文课也学过数学课的同学的信息
表:score ,student
自连接,分别查询语文课,数学课

select 
c.*
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

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

0-10 查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息

查询学过语文课但是没有学过数学课的同学的信息
将表的长数据,转换为宽数据
通过下面的方式,得到结果可以直观的看出来有01课程成绩但是没有02课程成绩

select 
a.s_id,
max(CASE when a.c_id='1' then a.s_score else null END) sco1 ,
max(CASE when a.c_id='2' then a.s_score else null END) sco2
from score a
GROUP BY a.s_id;

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

再用内连接将两张表连起来

select 
s.*
from 
(select
a.s_id,
max(CASE when a.c_id='1' then a.s_score else null END) sco1 ,
max(CASE when a.c_id='2' then a.s_score else null END) sco2
from score a
GROUP BY a.s_id) t,student s
where t.s_id=s.s_id
and t.sco1 is not NULL
and t.sco2 is   null;

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

ps:这里我数据库中的数据有错误,表中6号吴兰,02课程应该是没有成绩的,我当时设置错了,但是思路以及步骤都是正确的
如果有同学用的我提供的表来练习这个题目的话,把题目中的01课程和02课程换一个位置就可以了,这样按照解题思路求出来的是7号,因为他只有课程02,没有课程01

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端性别判断

<input type"radio" v-model"users.sex" value"1">男 <input type"radio" v-model"users.sex" value"0">女 这是一段HTML代码&#xff0c;用于创建两个单选按钮。这些单选按钮使用了Vue.js的v-mode…

外部中断0边沿触发

/*----------------------------------------------- 内容&#xff1a;通过中断接口P3.2连接的独立按键测试&#xff0c;按一次P1口的LED灯反向&#xff0c; 这里使用边沿触发&#xff0c;所以一直按键不松开和一次按键效果相同&#xff0c;区 别于电平触发 --…

Redis(09)| Reactor模式

我们在使用Redis的时候&#xff0c;通常是多个客户端连接Redis服务器&#xff0c;然后各自发送命令请求(例如Get、Set)到Redis服务器&#xff0c;最后Redis处理这些请求返回结果。 从上一篇博文《Redis&#xff08;08&#xff09;| 线程模型》中知道Redis是单线程。Redis除了处…

数据结构——栈与队列

目录 1. 中缀表达式转换为后缀表达式 2. 括号匹配问题 3. 栈实现队列 4. 约瑟夫环 1. 中缀表达式转换为后缀表达式 【问题描述】 输入一个中缀表达式&#xff0c;表达式中有、-、*、/四种运算以及&#xff08;、&#xff09;&#xff0c;表达式中的其他符号为大写的字母。实…

持续集成部署-k8s-服务发现-Ingress

持续集成部署-k8s-服务发现-Ingress 1. Ingress 是什么2. Ingress 控制器3. 安装 Ingress-Nginx3.1 添加 Helm 仓库3.2 更新 Helm 仓库3.3 下载 Ingress-Nginx 安装包3.4 配置 Ingress-Nginx 配置文件参数3.5 安装 Ingress-Nginx1. Ingress 是什么 Ingress是 Kubernetes 中的一…

力扣1047删除字符串中的所有相邻重复项(java,栈解法)

Problem: 1047. 删除字符串中的所有相邻重复项 文章目录 思路解题方法复杂度Code 思路 最直观的思路就是比较当前字的字符和相邻&#xff08;也包含删除后再相邻&#xff09;的上一字符是否相同&#xff0c;若相同则想办法去除两相同的字符&#xff0c;而关键就在如何较为便捷的…

QT webengine显示HTML简单示例

文章目录 参考示例1TestWebenqine.promainwindow.hmainwindow.cppmain.cpp效果 示例2 (使用setDevToolsPage函数)main.cpp效果 参考 QT webengine显示HTML简单示例 示例1 编译器 : Desktop Qt 5.15.2 MSVC2019 64bit编辑器: QtCreator代码: TestWebenqine.pro # TestWeben…

C#列表List的创建与使用

文章目录 C#列表List的创建与使用创建空列表方式一方式二 初始化创建插入数据逐个添加批量添加 访问列表遍历for循环foreach循环 C#列表List的创建与使用 创建空列表 方式一 List<string> pkValues new List<string>();方式二 var pkValues new List<stri…

pycharm运行R语言脚本(win10环境下安装)

文章目录 简介1. pycharm安装插件2. 安装R语言解释器2.1下载安装包2.2具体安装过程 3.编辑环境变量4 检验是否安装成功&#xff1a;5.安装需要的library6.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件&am…

06-Flask-蓝图的使用

蓝图的使用 前言蓝图使用方式 前言 本篇来学习下Flask中蓝图的使用 蓝图 在Flask中使用蓝图(Blurprint)来分模块组织管理蓝图可以理解为存储一组视图方法的容器对象&#xff0c;特点如下&#xff1a; 一个应用可以具有多个Blueprint可以将一个Blueprint注册到任何一个未使用…

震惊!原来BUG是这么理解的!什么是BUG?软件错误(BUG)的概念

较为官方的概念&#xff1a; 当且仅当规格说明是存在的并且正确&#xff0c;程序与规格说明之间的 不匹配才是错误。 当需求规格说明书没有提到的功能&#xff0c;判断标准以最终用户为准&#xff1a;当程序没有实现其最终用户合理预期的 功能要求时&#xff0c;就是软…

【Python 零基础入门】常用内置函数 初探

【Python 零基础入门】内容补充 1 常用内置函数 Python 简介为什么要学习内置函数数据类型和转换int(): 转为整数float(): 转为浮点数list(): 转为列表tuple(): 转换为元组set():转换为集合dict(): 创建字典: 数学运算abs(): 绝对值pow(): 幂运算round(): 四舍五入min(): 最小值…

NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理

node-sass安装问题处理 1.问题2.处理2.1 方案一【我的环境失败】2.2 方案二【成功】2.3 方案三【成功】 1.问题 gyp verb which failed Error: not found: python2 # 1.添加Python27的安装路径到环境变量 gyp verb check python checking for Python executable "python…

leetcode:1154. 一年中的第几天(python3解法)

难度&#xff1a;简单 给你一个字符串 date &#xff0c;按 YYYY-MM-DD 格式表示一个 现行公元纪年法 日期。返回该日期是当年的第几天。 示例 1&#xff1a; 输入&#xff1a;date "2019-01-09" 输出&#xff1a;9 解释&#xff1a;给定日期是2019年的第九天。 示例…

51单片机实验:数码管动态显示00-99

1、实验要求 利用STC89C52RC单片机开发板实现&#xff1a;使用2位数码管循环显示00-99&#xff0c;每次间隔1s&#xff0c;并且当计数到20时&#xff0c;则蜂鸣器鸣响1次。 2、实验分析 程序实现分析&#xff1a; 1、定义数码管位选引脚&#xff08;P2.4、P2.5、P2.6、…

如何在深度学习领域取得个人的成功

要在深度学习领域取得个人的成功&#xff0c;可以考虑以下建议&#xff1a; 学习深度学习的基础知识&#xff1a;首先&#xff0c;建立坚实的深度学习基础知识是非常重要的。你可以学习深度学习的基本概念、神经网络的原理、常用的深度学习框架&#xff08;如TensorFlow、PyTor…

idea上怎么将新创建项目转为maven项目

场景 在刚创建的一个项目中&#xff0c;往往没有被识别为maven项目&#xff0c;怎么做呢&#xff1f; 方法 然后选maven&#xff0c;这样这个项目就变成了maven项目

12.计算性能

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 深度学习硬件&#xff1a;CPU 和 GPU一、CPU 和 GPU二、QA No.2 深度学习硬件&#xff1a;TPU和其他一、更多的芯片二、QA No.3 单机多卡并行一、单机多卡并行二、QA No.4 多GPU训练实现一、从零开始二、D2L代码注意点三…

算法随想录算法训练营第四十六天| 583. 两个字符串的删除操作 72. 编辑距离

583. 两个字符串的删除操作 题目&#xff1a;给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 思路&#xff1a;这题思路主要是求出 word1 字符串和 word2 字符串中的最长相同的子字符串&…

TYWZOJ 种树苗 待定题解

文章目录 题目描述输入格式输出格式样例样例输入样例输出 数据范围与提示思路与部分实现完整代码 题目描述 在游戏 Minecraft 中&#xff0c;玩家可以通过种树来使木材再生。玩家需要将树苗种在泥土上&#xff0c;然后等待它长成大树&#xff0c;期间可以利用骨粉来催熟树苗。…