【SQL查询系列】子查询经典案例
生活随笔
收集整理的這篇文章主要介紹了
【SQL查询系列】子查询经典案例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 數據庫
- 查詢案例
- 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查询系列】子查询经典案例的全部內容,希望文章能夠幫你解決所遇到的問題。