成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL數據分析之子查詢

運維 數據庫運維
子查詢用于為主查詢返回其所需數據,或者對檢索數據進行進一步的限制,通常將一個查詢(子查詢)的結果作為另一個查詢(主查詢)的數據來源或判斷條件,常見的子查詢有WHERE子查詢,HAVING子查詢,FROM子查詢,SELECT子查詢,EXISTS子查詢。

[[408468]]

子查詢用于為主查詢返回其所需數據,或者對檢索數據進行進一步的限制,通常將一個查詢(子查詢)的結果作為另一個查詢(主查詢)的數據來源或判斷條件,常見的子查詢有WHERE子查詢,HAVING子查詢,FROM子查詢,SELECT子查詢,EXISTS子查詢。

子查詢是一種嵌套在其他 SQL 查詢的 WHERE 子句中的查詢,可以在 SELECT、INSERT、UPDATE 和 DELETE 語句中,同邏輯運算符一起使用。

示例工具:MySQL8.0、Navicat Premium 12

本文講解內容:SQL子查詢

適用范圍:子查詢在SQL數據分析中的應用

使用子查詢必須遵循以下幾個規則:

  • 子查詢必須括在圓括號中。
  • 子查詢的 SELECT 子句中只能有一個列,除非主查詢中有多個列,用于與子查詢選中的列相比較。
  • 子查詢不能使用 ORDER BY,不過主查詢可以。在子查詢中,GROUP BY 可以起到同 ORDER BY 相同的作用。
  • 返回多行數據的子查詢只能同多值操作符一起使用,比如 IN 操作符。
  • SELECT 列表中不能包含任何對 BLOB、ARRAY、CLOB 或者 NCLOB 類型值的引用。
  • 子查詢不能直接用在聚合函數中。
  • BETWEEN 操作符不能同子查詢一起使用,但是 BETWEEN 操作符可以用在子查詢中。

創建數據表

通常情況下子查詢都與 SELECT 語句一起使用,其基本語法如下所示:

  1. SELECT column_name [, column_name ] 
  2. FROM   table1 [, table2 ] 
  3. WHERE  column_name OPERATOR (SELECT column_name [, column_name ] 
  4.                              FROM table1 [, table2 ] 
  5.                              [WHERE]) 

對于子查詢的數據演示創建兩個表,一個是薪水表,另一個是職位表,并且插入數據。

  1. #創建薪水表SALARY 
  2. CREATE TABLE SALARY ( 
  3. ID VARCHAR ( 10 ), 
  4. NAME VARCHAR ( 10 ), 
  5. AGE VARCHAR ( 10 ), 
  6. ADDRESS VARCHAR ( 10 ), 
  7. SAL INT(10) ); 

給薪水表插入數據,數據內容如下所示:

  1. # 給薪水表插入數據 
  2. INSERT INTO SALARY(ID,NAME,AGE,ADDRESS,SAL) 
  3. VALUES 
  4. ('C001','Rmesh',35,'Ahmedabad',2000), 
  5. ('C002','Khilan',25,'Delhi',1500), 
  6. ('C003','Kaushik',23,'Kota',2000), 
  7. ('C004','Chaitali',25,'Mumbai',6500), 
  8. ('C005','Hardik',27,'Bhopal',8500), 
  9. ('C006','Komal',22,'MP',4500), 
  10. ('C007','Tom',26,'MP',5500), 
  11. ('C008','Muffy',24,'Indore',10000); 

查詢所有的薪水數據如下所示:

  1. SELECT * FROM  SALARY; 

同理創建一個職位表。

  1. #創建職位表JOB 
  2. CREATE TABLE JOB ( 
  3. JID VARCHAR ( 10 ), 
  4. JB VARCHAR ( 10 )); 

給職位表插入數據,數據內容如下所示:

  1. # 給職位表插入數據 
  2. INSERT INTO JOB(JID,JB) 
  3. VALUES 
  4. ('C001','Teacher'), 
  5. ('C002','Docter'), 
  6. ('C003','Teacher'), 
  7. ('C004','Worker'), 
  8. ('C005','Nurse'), 
  9. ('C006','Teacher'), 
  10. ('C007','Docter'), 
  11. ('C008','Teacher'); 

查詢所有的職位數據如下所示:

  1. SELECT * FROM  JOB; 

子查詢過濾

子查詢最常見的使用是在WHERE子句的IN操作符中,以及用來填充計算列。先看一個簡單的例子,要查詢所有醫生的薪水情況,這里首先在職位表中查詢所有醫生的JID,查詢結果如下:

  1. SELECT JID 
  2. FROM JOB 
  3. WHERE JB='Docter'

然后在薪水表中查詢ID為'C002','C007'的薪水情況,查詢結果如下:

  1. SELECT SAL 
  2. FROM SALARY 
  3. WHERE ID IN('C002','C007'); 

這里使用子查詢更加簡便,子查詢從內向外依次處理,在下面的SELECT語句中,MySQL實際上執行了兩個操作,首先查詢返回兩個ID號:C002和C007。

然后,這兩個值以IN操作符要求的逗號分隔的格式傳遞給外部查詢的WHERE子句,可以看到輸出的結果是正確的,并且與前面WHERE子句所返回的值相同。

  1. SELECT SAL 
  2. FROM SALARY 
  3. WHERE ID IN(SELECT JID 
  4.             FROM JOB 
  5.             WHERE JB='Docter'); 

使用子查詢查詢薪水大于8000的員工的所有信息,首先內部查詢薪水大于8000的ID,然后外部使用一個WHERE查詢即可得到結果。

  1. SELECT * 
  2. FROM SALARY 
  3. WHERE ID IN (SELECT ID 
  4.              FROM SALARY 
  5.              WHERE SAL > 8000); 

作為計算字段使用子查詢

使用子查詢的另一方法是創建計算字段,創建計算字段需要使用聚合函數,例如count,sum,avg,max,min等,這里首先計算平均薪水作為一個內查詢,然后在外部使用WHERE子句進行查詢,得出薪資比平均薪資低的員工的所有信息。

  1. SELECT * 
  2. FROM SALARY 
  3. WHERE SAL < (SELECT AVG(SAL)  
  4.              FROM SALARY); 

除使用WHERE過濾,還可以使用HAVING過濾,HAVING子句對分組統計函數進行過濾,也可以在HAVING子句中使用子查詢,要查詢薪資最高的人及其薪資情況,首先內部查詢最高工資,然后外部以人名分組后使用HAVING子句過濾,查詢結果如下。

  1. SELECT NAME,SAL 
  2. FROM SALARY 
  3. GROUP BY NAME 
  4. HAVING SAL = (SELECT MAX(SAL)  
  5.               FROM SALARY); 

本文轉載自微信公眾號「大話數據分析」,作者「尚天強」。可以通過以下二維碼關注。轉載本文請聯系大話數據分析公眾號。

 

責任編輯:武曉燕 來源: 大話數據分析
相關推薦

2011-08-12 09:29:32

SQL Server子查詢

2021-06-29 07:04:39

SQL數據視圖

2024-10-11 18:36:51

2015-08-14 10:28:09

大數據

2020-12-24 13:32:31

大數據數據分析SQL

2022-02-06 11:35:53

SQL數據函數

2025-04-17 02:00:00

數據分析SQL大數據

2020-07-26 19:19:46

SQL數據庫工具

2024-07-26 21:36:43

2017-04-11 09:08:02

數據分析Python

2009-09-15 10:46:04

LINQ to SQL

2017-09-01 09:52:20

PythonPandas數據分析

2022-11-14 10:36:55

數據科學數據分析

2015-10-26 10:41:10

數據分析思想指南

2015-08-11 15:52:52

大數據數據分析

2023-05-04 12:41:30

ChatGPTSQL數據分析

2015-07-23 09:34:57

大數據數據分析

2013-04-09 09:28:20

大數據大數據全球技術峰會

2016-05-10 10:43:02

2017-09-21 10:34:38

留存分析數據分析留存
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: a毛片视频网站 | 免费在线观看h片 | av一级久久 | 欧美午夜视频 | 国产一级视频 | 久草在线 | 91精品麻豆日日躁夜夜躁 | 久久久毛片 | 欧美成人猛片aaaaaaa | 日本久久精品视频 | 五月婷亚洲 | 久草在线免费资源 | 在线观看成人小视频 | 久久99精品久久久 | 狠狠干av| 久久久久久久国产精品视频 | 午夜免费精品视频 | 真人一级毛片 | 麻豆国产一区二区三区四区 | 久久久999免费视频 999久久久久久久久6666 | 五月婷婷 六月丁香 | 一级毛片免费完整视频 | 国产精品色婷婷久久58 | 在线看无码的免费网站 | 欧美第一页 | 国产日韩一区二区三区 | 亚洲成人免费av | 亚洲精品久久久久久久久久久久久 | 91九色视频 | 久久精品亚洲 | 自拍偷拍亚洲一区 | 在线视频中文字幕 | www.操com| 亚洲 欧美 精品 | 国产精品18毛片一区二区 | 日本a级大片 | 精品一区二区三区在线观看国产 | 91精品国产综合久久久动漫日韩 | 国产精品无码久久久久 | 狠狠亚洲 | 日本aa毛片a级毛片免费观看 |