文章目录

  • 前言
    • 数据库
    • 查询案例
      • 1. 查询工资最低的员工信息: last_name, salary
      • 2. 查询平均工资最低的部门信息
      • 3. 查询平均工资最低的部门信息和该部门的平均工资
      • 4. 查询平均工资最高的 job 信息
      • 5. 查询平均工资高于公司平均工资的部门有哪些?
      • 6. 查询出公司中所有 manager 的详细信息.
      • 7. 各个部门中 最高工资中最低的那个部门的 最低工资是多少
      • 8. 查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary
    • student数据库
    • 查询练习
      • 一、查询每个专业的学生人数 SELECT majorid,COUNT(*)
      • 二、查询参加考试的学生中,每个学生的平均分、最高分
      • 三、查询姓张的每个学生的最低分大于60的学号、姓名
      • 四、查询每个专业生日在“1988-1-1”后的学生姓名、专业名称
      • 五、查询每个专业的男生人数和女生人数分别是多少
      • 六、查询专业和张翠山一样的学生的最低分
      • 七、查询大于60分的学生的姓名、密码、专业名
      • 八、按邮箱位数分组,查询每组的学生个数
      • 九、查询学生名、专业名、分数
      • 十、查询哪个专业没有学生,分别用左连接和右连接实现
      • 十一、查询没有成绩的学生人数
    • 【学习资料】
      • 【01学习笔记】
      • 【02课程资料】

前言

近期在补SQL的基础,特别整理了一下SQL的一些查询练习语句,边学边笔记,持续更新~

数据库

查询案例

1. 查询工资最低的员工信息: last_name, salary

#①查询最低的工资
SELECT MIN(salary)
FROM employees#②查询last_name,salary,要求salary=①
SELECT last_name,salary
FROM employees
WHERE salary=(SELECT MIN(salary)FROM employees
);

2. 查询平均工资最低的部门信息

#方式一:
#①各部门的平均工资
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
#②查询①结果上的最低平均工资
SELECT MIN(ag)
FROM (SELECT AVG(salary) ag,department_idFROM employeesGROUP BY department_id
) ag_dep#③查询哪个部门的平均工资=②SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary)=(SELECT MIN(ag)FROM (SELECT AVG(salary) ag,department_idFROM employeesGROUP BY department_id) ag_dep);#④查询部门信息SELECT d.*
FROM departments d
WHERE d.`department_id`=(SELECT department_idFROM employeesGROUP BY department_idHAVING AVG(salary)=(SELECT MIN(ag)FROM (SELECT AVG(salary) ag,department_idFROM employeesGROUP BY department_id) ag_dep));#方式二:
#①各部门的平均工资
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id#②求出最低平均工资的部门编号
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1;#③查询部门信息
SELECT *
FROM departments
WHERE department_id=(SELECT department_idFROM employeesGROUP BY department_idORDER BY AVG(salary) LIMIT 1
);

3. 查询平均工资最低的部门信息和该部门的平均工资

#①各部门的平均工资
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
#②求出最低平均工资的部门编号
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
ORDER BY AVG(salary)
LIMIT 1;
#③查询部门信息
SELECT d.*,ag
FROM departments d
JOIN (SELECT AVG(salary) ag,department_idFROM employeesGROUP BY department_idORDER BY AVG(salary) LIMIT 1
) ag_dep
ON d.`department_id`=ag_dep.department_id;

4. 查询平均工资最高的 job 信息

#①查询最高的job的平均工资
SELECT AVG(salary),job_id
FROM employees
GROUP BY job_id
ORDER BY AVG(salary) DESC
LIMIT 1
#②查询job信息
SELECT *
FROM jobs
WHERE job_id=(SELECT job_idFROM employeesGROUP BY job_idORDER BY AVG(salary) DESCLIMIT 1
);

5. 查询平均工资高于公司平均工资的部门有哪些?

#①查询平均工资
SELECT AVG(salary)
FROM employees#②查询每个部门的平均工资
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id#③筛选②结果集,满足平均工资>①
SELECT AVG(salary),department_id
FROM employees
GROUP BY department_id
HAVING AVG(salary)>(SELECT AVG(salary)FROM employees
);

6. 查询出公司中所有 manager 的详细信息.

#①查询所有manager的员工编号
SELECT DISTINCT manager_id
FROM employees#②查询详细信息,满足employee_id=①
SELECT *
FROM employees
WHERE employee_id =ANY(SELECT DISTINCT manager_idFROM employees
);

7. 各个部门中 最高工资中最低的那个部门的 最低工资是多少

#①查询各部门的最高工资中最低的部门编号
SELECT department_id
FROM employees
GROUP BY department_id
ORDER BY MAX(salary)
LIMIT 1#②查询①结果的那个部门的最低工资
SELECT MIN(salary) ,department_id
FROM employees
WHERE department_id=(SELECT department_idFROM employeesGROUP BY department_idORDER BY MAX(salary)LIMIT 1
);

8. 查询平均工资最高的部门的 manager 的详细信息: last_name, department_id, email, salary

#①查询平均工资最高的部门编号
SELECT department_id
FROMemployees
GROUP BY department_id
ORDER BY AVG(salary) DESC
LIMIT 1 #②将employees和departments连接查询,筛选条件是①SELECT last_name, d.department_id, email, salary FROMemployees e INNER JOIN departments d ON d.manager_id = e.employee_id WHERE d.department_id = (SELECT department_id FROMemployees GROUP BY department_id ORDER BY AVG(salary) DESC LIMIT 1) ;

student数据库

查询练习

一、查询每个专业的学生人数 SELECT majorid,COUNT(*)

FROM student
GROUP BY majorid;

二、查询参加考试的学生中,每个学生的平均分、最高分

SELECT AVG(score),MAX(score),studentno
FROM result
GROUP BY studentno;

三、查询姓张的每个学生的最低分大于60的学号、姓名

SELECT s.studentno,s.`studentname`,MIN(score)
FROM student s
JOIN result r
ON s.`studentno`=r.`studentno`
WHERE s.`studentname` LIKE '张%'
GROUP BY s.`studentno`
HAVING MIN(score)>60;

四、查询每个专业生日在“1988-1-1”后的学生姓名、专业名称

SELECT m.`majorname`,s.`studentname`
FROM student s
JOIN major m
ON m.`majorid`=s.`majorid`
WHERE DATEDIFF(borndate,'1988-1-1')>0
GROUP BY m.`majorid`;

五、查询每个专业的男生人数和女生人数分别是多少

SELECT COUNT(*),sex,majorid
FROM student
GROUP BY sex,majorid;

六、查询专业和张翠山一样的学生的最低分

#①查询张翠山的专业编号
SELECT majorid
FROM student
WHERE studentname = '张翠山'#②查询编号=①的所有学生编号
SELECT studentno
FROM student
WHERE majorid=(SELECT majoridFROM studentWHERE studentname = '张翠山')
#②查询最低分
SELECT MIN(score)
FROM result
WHERE studentno IN(SELECT studentnoFROM studentWHERE majorid=(SELECT majoridFROM studentWHERE studentname = '张翠山')
)

七、查询大于60分的学生的姓名、密码、专业名

SELECT studentname,loginpwd,majorname
FROM student s
JOIN major m ON s.majorid=  m.majorid
JOIN result r ON s.studentno=r.studentno
WHERE r.score>60;

八、按邮箱位数分组,查询每组的学生个数

SELECT COUNT(*),LENGTH(email)
FROM student
GROUP BY LENGTH(email);

九、查询学生名、专业名、分数

SELECT studentname,score,majorname
FROM student s
JOIN major m ON s.majorid=  m.majorid
LEFT JOIN result r ON s.studentno=r.studentno

十、查询哪个专业没有学生,分别用左连接和右连接实现

#左
SELECT m.`majorid`,m.`majorname`,s.`studentno`
FROM major m
LEFT JOIN student s ON m.`majorid` = s.`majorid`
WHERE s.`studentno` IS NULL;#右
SELECT m.`majorid`,m.`majorname`,s.`studentno`
FROM student s
RIGHT JOIN  major m ON m.`majorid` = s.`majorid`
WHERE s.`studentno` IS NULL;

十一、查询没有成绩的学生人数

SELECT COUNT(*)
FROM student s
LEFT JOIN result r ON s.`studentno` = r.`studentno`
WHERE r.`id` IS NULL

【学习资料】

【01学习笔记】

  • 【SQL数据库基础01】数据库和SQL概述
  • 【SQL数据库基础02】MySQL最新版安装使用教程–(安装、卸载、登录、常用命令、语法规范、图形化界面SQLyog)
  • 【SQL数据库基础03】数据处理之查询 (•过滤和排序数据 •分组函数 •分组查询 •多表查询 •分页查询 •联合查询)
  • 【SQL查询系列】子查询经典案例
  • 【SQL数据库基础04】数据操纵语言DML,即SQL的增删改查
  • 【SQL数据库基础05】数据定义语言DDL-库表的管理、数据类型、常见的约束
  • 【SQL数据库基础05-1】常见的数据类型–• 数值类型• 字符类型• 日期类型
  • 【SQL数据库基础05-2】常见约束与标识列
  • 【SQL数据库基础06】事务控制语言TCL–事务(概念、特性、隔离级别、案例演示)
  • 【SQL数据库基础07】视图–定义、增删改查视图
  • 【SQL数据库基础08】变量–系统变量:全局、会话、自定义变量
  • 【SQL数据库基础09】存储过程
  • 【SQL数据库基础10】函数
  • 【SQL数据库基础11】流程控制结构

【02课程资料】

  • 《数据库系统概论(第5版)》
  • 计院学网盘复习资料–数据库
  • 尚硅谷MySQL核心技术-婷姐

【SQL查询系列】子查询经典案例相关推荐

  1. oracle sql 转换成 hive sql -子查询转关联查询(三).子查询中嵌套子查询

    其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看 Oracle转换hive 其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格 ...

  2. SQL进阶,子查询与窗口函数

    本节给大家讲解SQL在实际过程中用途比较多的子查询与窗口函数,下面一起学习. 示例工具:MySQL8.0.Navicat Premium 12 本文讲解内容:子查询与窗口函数 适用范围:SQL进阶应用 ...

  3. SQL语言之子查询(Oracle)

    子查询(内查询) 一个select语句嵌套在另一个select语句中的子句: 例 可以用组合两个查询的方法解决这个问题,放置一个查询到另一个查询中.内查询或子查询返回一个值给外查询或主查询.使用一个子 ...

  4. mysql多表查询sql语句怎么写_MySQL基本SQL语句之单表查询、多表查询和子查询

    一.简单查询: 基本语法: SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * F ...

  5. SQL优化--使用关联查询代替子查询

    SQL优化--使用关联查询代替子查询 测试例子: 子查询: select a.*, (select workflowname from workflowbase where id=workflowid ...

  6. sql 子查询 嵌套查询_SQL子查询– SQL中的嵌套查询

    sql 子查询 嵌套查询 In the real world, there are times when we need a particular set of data but we don't h ...

  7. 金仓数据库 KingbaseES SQL 语言参考手册 (10. 查询和子查询)

    10. 查询和子查询 本章描述SQL查询以及子查询.包含以下章节: 关于查询和子查询 创建简单查询 层次查询 集合操作 查询结果排序 JOIN操作 使用子查询 限制嵌套查询层数 DUAL表查询 10. ...

  8. sql镶嵌查询_【SQL】嵌套查询与子查询

    前言 sql的嵌套查询可以说是sql语句中比较复杂的一部分,但是掌握好了的话就可以提高查询效率.下面将介绍带in的子查询.带比较运算符的子查询.带any/all的子查询.带exists的子查询以及基于 ...

  9. mysql 单表 子查询_MySQL基本SQL语句之单表查询、多表查询和子查询 | 旺旺知识库...

    一.简单查询: 基本语法: SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * F ...

  10. mysql 单表子查询语句_MySQL基本SQL查询语句:多表查询和子查询示例

    一.简单查询:基本语法: 代码如下 SELECT * FROM tb_name; 查询全部 代码如下 SELECT field1,field2 FROM tb_name; 投影 代码如下 SELECT ...

最新文章

  1. 2022-2028年中国钢铁冶炼行业市场研究及前瞻分析报告
  2. 关系竞争 :今目标可能成为个一个的企业社交网络
  3. python编程能力等级测试_56岁的潘石屹参加全国青少年编程能力等级测试,你还在问编程是什么?...
  4. Android adb你真的会用吗?
  5. Machine Learning week 6 quiz: Advice for Applying Machine Learning
  6. Ribbon-负载均衡原理
  7. Angular formControl指令定义的位置
  8. [Noi2016]区间
  9. android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧)...
  10. ACM-ICPC 2018 徐州赛区网络预赛 J Maze Designer(最大生成树+LCA)
  11. unity5.0安卓开发环境配置
  12. My97pickerdate设置默认开始日期为当天
  13. 计算机主板外频,笨鸟先飞 主板超频BIOS选项接触(图解)
  14. MarkDown-Typora MarkDown Reference
  15. java特种兵_《Java特种兵(上册)》PDF 下载
  16. 兼容各大浏览器导出Excel
  17. [DBNETLIB][ConnectionOpen(connect()).]SQL Server 不存在或拒绝访问解决方方法
  18. matlab怎么显示特征脸,matlab表情识别 Matlab表情识别,特征脸[1 ]作为面部表情分类的方法 联合开发网 - pudn.com...
  19. 图片怎么压缩小于1m?
  20. 学术论文写作以及discussions/results与conclusion的区别

热门文章

  1. [附源码]SSM计算机毕业设计构建养猪场管理系统JAVA
  2. java 连接ntp服务器_NTP搭建-时间服务器
  3. 区块链如何助推著原创保护
  4. python爬虫(14)获取淘宝MM个人信息及照片(中)
  5. 天文观测常用英文单词
  6. 如何快速剪辑多个短视频,去除视频片尾
  7. 格林函数的物理意义是什么?
  8. 经典电动力学:Schwinge (格林函数介绍)
  9. android 无缝连续播放视频
  10. 高级网管网上培训班即将开课