當前位置:首頁 » 編程語言 » sql數據分析怎麼讀
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql數據分析怎麼讀

發布時間: 2022-11-02 21:57:10

① 數據分析人必掌握的資料庫語言-sql指南第七期

本篇重點為大家講解 組合數據、數據插入、更新和刪除數據 相關內容。



多數SQL查詢只包含從一個或多個表中返回數據的單條 SELECT 語句。但是,SQL也允許執行多個查詢,並將結果作為一個查詢結果集返回。這些組合查詢通常稱為並 (union) 或復合查詢 (compound query)。

主要有 兩種情況 需要使用組合查詢:

在一個查詢中從不同的表返回結構數據;

對一個表執行多個查詢,按一個查詢返回數據。

創建組合查詢

利用 UNION ,可給出多條 SELECT 語句,將它們的結果組合成一個結果集。

使用方法: 給出每條SELECT語句,在各條語句之間放上關鍵字UNION。

假如需要Illinois、Indiana和Michigan等美國幾個州的所有顧客的報表,還想包括不管位於哪個州的所有的Fun4All。

分析:這條語句由兩條 SELECT語句 組成,之間用 UNION 關鍵字分隔。UNION指示DBMS執行這兩條SELECT語句,並把輸出組合成一個查詢結果集。

在簡單的例子中,使用UNION可能比使用WHERE子句更為復雜。但對於較復雜的過濾條件,或者從多個表中檢索數據的情形,使用UNION可能會使處理更簡單。

1、UNION規則

UNION必須由 兩條或兩條以上 的SELECT語句組成,語句之間用關鍵字 UNION分隔。

UNION中的每個查詢必須包含相同的 列、表達式或聚集函數。

列數據類型 必須兼容 :類型不必完全相同,但必須是DBMS可以隱含轉換的類型。

2、包含或取消重復的行

使用 UNION 時, 重復的行會被自動取消 ,這是UNION的默認行為,如果想返回所有的匹配行,可使用 UNION ALL

3、對組合查詢結果排序

在用 UNION組合查詢 時,只能使用一條 ORDER BY 子句,它必須位於最後一條SELECT語句之後。

TopBDA大數據分析師培訓

除了SQL資料庫學習,還有大量數據分析知識和實操等你 探索 !

SELECT是最常用的SQL語句,還有其他3個常用的SQL語句需要學習,第一個就是 INSERT ,另外兩個之後為大家介紹。

INSERT用來 將行插入或添加到資料庫表 ,插入有幾種方式:

插入完整的行;

插入行的一部分;

插入某些查詢的結果。

插入完整的行

把數據插入表中的最簡單方法是使用基本的 INSERT 語法。

分析:在插入行時,DBMS將用VALUES列表中的相應值填入列表中的對應項。VALUES中的第一個值對應於第一個指定列名,第二個值對應於第二個列名,如此等等。

插入部分行

使用這種語法,還可以 省略列 ,這表示可以只給某些列提供值,給其他列不提供值。

分析:沒有給 cust_contact cust_email 這兩列提供值,這表示沒必要在INSERT語句中包含它們。因此,這里的INSERT語句 省略了這兩列及其對應的值。

插入檢索出的數據

INSERT一般用來給表插入具有指定列值的行。

INSERT還存在另一種形式, 可以利用它將SELECT語句的結果插入表中, 這就是所謂的 INSERT SELECT

假如想把另一表中的顧客列合並到Customers表中,不需要每次讀取一行再將它用INSERT插入,可以如下進行:

分析:使用INSERT SELECT從CustNew中將所有數據導入Customers。SELECT語句從CustNew檢索出要插入的值,SELECT中列出的每一列對應於Customers表名後所跟的每一列。

從一個表復制到另一個表

可以使用 CREATE SELECT 語句(或者在SQL Server里也可用 SELECT INTO 語句)。

INSERT SELECT 將數據添加到一個已經存在的表不同,CREATE SELECT將數據復制到一個新表。

使用SQL Server,可以這么寫:

分析:創建一個名為CustCopy的新表,並把Customers表的整個內容復制到新表中。

在使用 SELECT INTO 時,任何SELECT選項和子句都可以使用,包括 WHERE GROUP BY ;可利用連接從多個表插入數據;不管從多少個表中檢索數據,數據都只能插入到一個表中。



更新數據

更新表中的數據,可以使用 UPDATE 語句,使用UPDATE的方式有兩種:

更新表中的特定行;

更新表中的所有行。

基本UPDATE語句由三部分組成,分別是:

要更新的表;

列名和它們的新值;

確定要更新哪些行的過濾條件。

舉一個簡單例子,客戶1現在有了電子郵件地址,因此他的記錄需要更新,語句如下:

分析:UPDATE語句以要更新的表名開始。要更新的表名為Customers。SET命令用來將新值賦給被更新的列。UPDATE語句以WHERE子句結束,它告訴DBMS更新哪一行。

更新多個列的語法稍有不同。

分析:在更新多個列時,只需要使用一條SET命令,每個「列=值」對之間用逗號分隔(最後一列之後不用逗號)。

要刪除某個列的值,可設置它為NULL。

分析:NULL用來去除cust_email列中的值。

刪除數據

從一個表中刪除數據,使用DELETE語句,使用DELETE的方式有兩種:

從表中刪除特定的行;

從表中刪除所有行。

分析:DELETEFROM要求指定刪除數據的表名,WHERE子句過濾要刪除的行。如果省略WHERE子句,它將刪除表中每個顧客。

DELETE不需要列名或通配符 ,DELETE刪除整行而不是刪除列,要刪除指定的列,使用 UPDATE 語句。

使用 UPDATE或DELETE 時所遵循的重要原則:

除非更新和刪除每一行,否則絕對不要使用不帶WHERE子句的UPDATE或DELETE語句。

保證每個表都有主鍵,盡可能像WHERE子句那樣使用它。

在UPDATE或DELETE語句使用WHERE子句前,應該先用SELECT進行測試,保證它過濾的是正確的記錄,以防編寫的WHERE子句不正確。

使用強制實施引用完整性的資料庫,這樣DBMS將不允許刪除其數據與其他表相關聯的行。

有的DBMS允許資料庫管理員施加約束,防止執行不帶WHERE子句的UPDATE或DELETE語句。若是SQL沒有撤銷(undo)按鈕,應該非常小心地使用UPDATE和DELETE。

以上就是今天分享的全部內容,下期重點為大家介紹 使用視圖和創建和操縱表 ,我們下期見!

② 用SQL做簡單數據分析(入門級)

你要的分析功能已經有智能分析的要求了
這超出了sql現有的功能 ,只用sql語句是無法直接打到這種分析的

③ sql數據分析是啥意思

sql數據分析是結構化查詢語言。

結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統。

結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式。

所以具有完全不同底層結構的不同資料庫系統, 可以使用相同的結構化查詢語言作為數據輸入與管理的介面。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。

SQL具有數據定義、數據操縱、數據查詢和數據控制的功能。

1、SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式(Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。

2、SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。

3、SQL的數據控制功能:主要是對用戶的訪問許可權加以控制,以保證系統的安全性。

④ 如何在EXCEL中使用SQL進行數據處理與分析

在EXCEL中使用SQL進行數據處理與分析步驟有:

工具原料:excel2013版本

  1. 打開「excel」,在「數據」選項卡中,找到「自其他來源」;




    ⑤ SQL資料庫是什麼

    SQL是Structured Query Language(結構化查詢語言)的縮寫。SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。在使用它時,只需要發出「做什麼」的命令,「怎麼做」是不用使用者考慮的。

    SQL資料庫的數據體系結構基本上是三級結構,但使用術語與傳統關系模型術語不同。在SQL中,關系模式(模式)稱為"基本表"(base table);存儲模式(內模式)稱為"存儲文件"(stored file);子模式(外模式)稱為"視圖"(view);元組稱為"行"(row);屬性稱為"列"(column)。

    (5)sql數據分析怎麼讀擴展閱讀

    SQL資料庫的優點:

    1、易用性高:

    適合分布式組織的可伸縮性、用於決策支持的數據倉庫功能、與許多其他伺服器軟體緊密關聯的集成性、良好的性價比等。

    2.為數據管理與分析帶來了靈活性:

    允許單位在快速變化的環境中從容響應,從而獲得競爭優勢。從數據管理和分析角度看,將原始數據轉化為商業智能和充分利用Web帶來的機會非常重要。作為一個完備的資料庫和數據分析包,SQLServer為快速開發新一代企業級商業應用程序、為企業贏得核心競爭優勢打開了勝利之門。

    ⑥ 地鐵上的SLQ啥意思

    摘要 SQL 全稱是Structured Query Language,具有數據操縱和數據定義等多種功能的資料庫語言,這種語言具有交互性特點,能為用戶提供極大的便利,資料庫管理系統應充分利用SQL語言提高計算機應用系統的工作質量與效率。SQL語言不僅能獨立應用於終端,還可以作為子語言為其他程序設計提供有效助力,該程序應用中,SQL可與其他程序語言一起優化程序功能,進而為用戶提供更多更全面的信息。

    ⑦ 如何用SQL分析電商用戶行為數據(案例)

            

    本文以「淘寶用戶行為數據集」的分析全過程為例,展示數據分析的全過程

    ——使用工具:MySQL,Excel,Navicat,PowerBI

    ——分析類型:描述分析,診斷分析

    ——分析方法:漏斗分析,用戶路徑分析,RFM用戶價值分析,活躍/存留分析,帕累托分析,假設驗證分析。

    (考慮到閱讀體驗文章中只放了SQL截圖,如需PDF版本,再公眾號後台回復「用戶行為分析」領取)

    (目錄如下)

           

    1.分析流程和方法

    當沒有清晰的數據看板時我們需要先清洗雜亂的數據,基於分析模型做可視化,搭建描述性的數據看板。

    然後基於描述性的數據挖掘問題,提出假設做優化,或者基於用戶特徵數據進行預測分析找規律,基於規律設計策略。簡單來說:

    ——描述性分析就是:「畫地圖」

    ——診斷性分析就是:「找問題」

    ——預測性分析就是 :「找規律」


    在數據分析中有兩個典型的場景:

    一種是有數據,沒有問題:需要先整體分析數據,然後再根據初步的描述分析,挖掘問題做診斷性分析,提出假設,設計策略解決問題。

     

    另一種是已經發現了問題,或者已經有了假設,這種做數據分析更偏向於驗證假設。

     

    2.淘寶用戶行為分析

    本次是對「淘寶用戶行為數據集」進行分析,在分析之前我們並不知道有什麼問題,所以需要先進行描述性分析,分析數據挖掘問題。

    我們首先來看下這個數據集的元數據:

           

    根據以上數據欄位我們可以拿用戶行為為主軸從縱深方向提出一些問題,然後再從數據中找答案

           

    縱向:

    ——這個數據集中用戶的日活躍和周活躍時間有什麼規律嗎?

    ——在當日活躍的用戶次日,三日,四日……還有多少活躍?

    深向:

    ——用戶從瀏覽到購買的整體轉化率怎麼樣?

    ——用戶從瀏覽到購買的路徑是怎麼樣子的? 

    ——平台主要會給用戶推送什麼商品?

    ——用戶喜歡什麼類目?喜歡什麼商品? 

    ——怎麼判斷哪些是高價值用戶 ? 

     

     

    下面是叮當整理的常用分析方法:      

    我們可以給前面的問題匹配一下分析方法,便於後面的分析:


    為了便於後面的數據分析,在分析之前我們需要先對做一下清洗

    看元數據(欄位解釋,數據來源,數據類型,數據量……)初步發現問題為之後的處理做准備。

           

    確定缺失值范圍,去除不需要欄位,填充缺失內容    

    根據元數據格式和後續分析需要的格式對數據進行處理

      


    去除重復值,異常值

    ——去除重復值:並把用戶ID,商品ID,時間戳設置為主鍵

    ——異常值處理:查詢並刪除2017年11月25日至2017年12月3日之外的數據

         

    查詢並刪除小於2017-11-25的

    ——驗證數據:      


    ——分析思路:

    ——SQL提數:

           

           

    ——Excel可視化:

           

    活躍曲線整體為上升狀態,同為周六日,12月2號,3號相比11月25日,26日活躍度更高。

    用戶在周六周日相比其他時間更活躍(周六周日為休息日,用戶有更多時間)

          

    一天內用戶活躍的最高峰期為21點(用戶在這個時間段空閑較多)

     

    ——分析思路:

    ——SQL提數:

    列出每用戶每天及當天後面又活躍的日期,並創建「活躍時間間隔表」用於後面求次日存留,三日存留……

           

    對「活躍時間間隔表視圖」引用進行分組統計,計算每日存留人數並創建視圖

    對存留人數表進行計算,統計活躍用戶留存率

    ——Excel可視化:

           

    ——分析思路:

    ——SQL提數:

    -把各種用戶行為分離出來並創建視圖方便後續查詢用戶行為數據

    查詢整體數據漏斗

    ——Excel可視化:

           

    用戶從瀏覽到購買整體轉化率2.3%,具體主要在哪個環節流失還需要再細分用戶路徑分析

     

    ——分析思路:

           

    ——SQL提數:

    ——PowerBI可視化:

           

    用戶從瀏覽到購買的路徑主要有4條,路徑越長轉化率越底

    路徑1:瀏覽→購買:轉化率1.45%

    路徑2:瀏覽→加購物車→購買:轉化率0.33

    路徑3:瀏覽→收藏→購買:轉化率0.11%

    路徑4:瀏覽→收藏→加購物車→購買:轉化率0.03%

    ——分析思路:

    ——SQL提數:


    ——Excel可視化:

           

    ——描述性分析:

    瀏覽量top100的商品瀏覽量呈階梯分布,越靠前的階梯之間的落差相對越大在這個階梯中的商品越少,越靠後商品瀏覽量階梯之間的落差相對越小,同階梯內的商品越多。

    瀏覽量TOP100的商品所屬類目中,4756105,3607361,4357323三個類目瀏覽量遠超其他類目。

    ——分析思路:

    ——SQL提數:

    查詢計算商品轉化率,升序排列,取前100個

           

    ——Excel可視化:

           

    ——描述性分析:

    從商品看:有17款商品轉化率超過了1。

    從類目看:這些商品所屬類目分布均勻,除965809,4801426,2735466,2640118,5063620,4789432,2945933這7個類目之外,其他類目都只有一個商品在轉化率TOP100的商品中。

    ——分析思路:

    用戶價值分析常用的分析方式是RFM模型

           

    本次分析中的R,F,M具體定義(僅用於演示分析方法,無實際業務參考價值):

     

    ——SQL取數與分析:

    1)建立打分標准:先計算R,F的值,並排序,根據R,F值最大值和最小值得區間設計本次得打分標准

    -查詢並計算R,F值創建視圖

           

    -引用RF數值表,分別查詢R,F的最大值和最小值

           

           

    -結合人工瀏覽的建立打分標准      

    2)給R,F按價值打分

    3)計算價值的平均值

           

    4)用平均值和用戶分類規則表比較得出用戶分類   

         

    ——Excel可視化      

     

    通過描述性分析得到可視化的數據後我們一般會先看一下是否符合業務常識

    如果符合常識接下來我們會通過與行業平均數據和本產品的同比環比對比看是否正常,如果不正常就要找原因,設計解決方案,如果正常那就看是否有可以優化的地方。

           

    我們首先來看一下這些描述性分析是否符合業務常識和指標是否正常:

           

    1.活躍曲線整體為上升狀態,同為周六日,12月2號,3號相比11月25日,26日活躍度更高。

    2.用戶在周六周日相比其他時間更活躍

    3.一天內用戶活躍的最高峰期為21點

    4.從2017年11月15日致2017年12月3日,活躍用戶新增38%

    5.從2017年11月15日致2017年12月3日,活躍用戶次日留存增長18.67%,當日的活躍用戶留存也在快速增長,第七日留存比次日留存高18.56%。

    6.用戶從瀏覽到購買整體轉化率2.3%

    7.用戶從瀏覽到購買的路徑主要有4條,路徑越長轉化率越低。

    8.瀏覽量top100的商品瀏覽量呈階梯分布,越靠前的階梯之間的落差相對越大在這個階梯中的商品越少,越靠後商品瀏覽量階梯之間的落差相對越小,同階梯內的商品越多。

    9.瀏覽量TOP100的商品所屬類目中,4756105,3607361,4357323三個類目瀏覽量遠超其他類目。

    10.從商品看:有17款商品轉化率超過了1。

    11.從類目看:這些商品所屬類目分布均勻,除965809,4801426,2735466,2640118,5063620,4789432,2945933這7個類目之外,其他類目都只有一個商品在轉化率TOP100的商品中。

    根據以上診斷分析我們梳理出了以下假設,做假設驗證。

           

     

    假設1:這些商品中有高轉化率的爆款商品

           

     

    對比瀏覽量TOP5的商品,發現這些商品轉化率在同一類目下並不高,假設不成立

     

    假設2:4756105,3607361,4357323三個類目屬於高頻剛需類目

    -創建類目購買頻次表

           

    -計算類目購買頻次平均值

           

    -查詢4756105,3607361,4357323三個類目的購買頻次       

    4756105,3607361,4357323三個類目的用戶購買頻次明顯高於平均值,假設成立

     

    假設3:有部分用戶是未點擊商詳直接從收藏和購物車購買的。

           

    用戶不是直接從收藏和購物車購買的,只是後續復購未點擊商詳,假設不成立

     

    假設4:淘寶推薦的商品主要是「同一類目下的高轉化商品」

           

    用Excel對瀏覽量TOP100的商品ID和轉化率TOP100的商品ID進行去重,結果無重復值,假設不成立


    3.結論:

    1)用戶活躍:用戶活躍曲線整體呈上升趨勢,在一周中周六,周日活躍度比平時更高,在一天中用戶活躍曲線從凌晨4點開始往上升,在中午12點和下午5~6點有兩個小低谷(吃飯),到晚上9點時活躍度達到頂峰。

     

    2)用戶留存:從2017年11月15日致2017年12月3日的用戶留存數據來看,淘寶的用戶留存數據較好,活躍用戶次日留存增長18.67%,當日的活躍用戶留存也在快速增長,第七日留存比次日留存高18.56%。

     

    3)用戶轉化:整體轉化2.3%,用戶從瀏覽到購買的路徑主要有4條,路徑越長轉化率越低。

    4)平台推薦與用戶偏好:從數據集中的數據來看,排除用戶興趣偏好標簽,淘寶給用戶用戶推送的商品主要是高頻剛需的類目,促使用戶復購,流量迴流平台。

     

    以上結論受數據量和數據類型的影響,並不一定準確,僅用來練習數據分析方法。

    (考慮到閱讀體驗文章中只放了SQL截圖,如需PDF版本,再公眾號後台回復「用戶行為分析」領取)

    ⑧ 數據分析如何入行

    想要入行數據分析需要學習以下三種技能

    1,SQL(資料庫)處理海量的數據,數據來源於資料庫,從資料庫取數據,何建立兩表、三表之間的關系,想要的特定的數據等,而這些是需要SQL解決的,所以SQL是數據分析的最基礎的技能。

    (8)sql數據分析怎麼讀擴展閱讀

    一、數據分析方向

    數據挖掘方向:想要在一兩個月內快速成為數據挖掘向的數據分析師很難,做數據挖掘必須要底子深基礎牢,編程語言基礎、演算法、數據結構、統計學知識樣樣不能少。利用數據挖掘進行數據分析常用的3個方法:分類、回歸分析、聚類等, 它們分別從不同的角度對數據進行挖掘。


    回歸分析:回歸分析方法反映的是事務資料庫中屬性值在時間上的特徵,產生一個將數據項映射到一個實值預測變數的函數,發現變數或屬性間的依賴關系,其主要研究問題包括數據序列的趨勢特徵、數據序列的預測以及數據間的相關關系等。


    業務方向:需要對業務感知能力強,對數據十分敏感,掌握常用的一些業務分析模型套路,企業經常招聘的崗位是:商業分析、數據運營、用戶研究、策略分析等等。


    二、入門數據分析的參考書籍推薦

    《增長黑客》、《網站分析實戰》、《精益數據分析》、《深入淺出數據分析》、《啤酒與尿布》、《數據之魅》、《Storytelling with Data》。

    ⑨ SQL資料庫語言分析

    ALTER TABLE Customer_Data
    ADD middle_initial char(1)
    GO
    這個本來就是一條執行語句 ...
    意思是給表Customer_Data添加一個欄位名為middle_initial的欄位, 類型為CHAR,長度為1
    至GO 寫不寫都行

    ⑩ 數據分析人必掌握的資料庫語言-SQL指南第五期

    本篇文章繼續圍繞SQL的語法重點為大家介紹 子查詢 的使用。



    使用子查詢進行過濾

    在SQL中SELECT語句用於查詢,之前所使用的所有SELECT語句都是簡單查詢,即從單個資料庫表中檢索數據的單條語句。然而SQL還可以創建子查詢,即嵌套在其他查詢中的查詢。

    示例:

    數據表:本次使用的資料庫表都是 關系表 。訂單存儲在兩個表中,每個訂單包含訂單編號、客戶ID、訂單日期,在Orders表中存儲為一行。各訂單的物品存儲在相關的OrderItems表中。Orders表不存儲顧客信息,只存儲顧客ID。顧客實際信息存儲在Customers表中。

    若現在需要檢索出訂購RGAN01的所有顧客,應怎樣檢索? 步驟如下:

    檢索包含物品RGAN01的所有訂單的編號。

    檢索具有前一步驟列出的訂單編號的所有顧客的ID。

    檢索前一步驟返回的所有顧客ID的顧客信息。

    上述每個步驟都可 單獨作為一個查詢 來進行。

    可將一條SELECT語句返回的結果用於另一條SELECT語句的WHERE子句,也可使用 子查詢 來將3個查詢組合成一條語句。

    第一個語句含義明確,是對prod_id為RGAN01的所有訂單物品檢索其order_num列。

    分析: 通過該語句知道了哪個訂單包含要檢索的物品。

    下一步查詢與上述語句檢索出的訂單20007和20008相關的顧客ID。此處可利用IN子句。

    下面可結合上述兩個查詢,將第一個查詢變為子查詢。

    分析:在SELECT語句中, 子查詢總是從內向外處理 。在處理上述SELECT語句時,DBMS實際上執行了兩個操作。

    首先執行了 圓括弧()內的查詢 ,此查詢返回兩個訂單號: 20007 20008 .

    接著這兩個值以IN操作符要求的逗號分隔的格式傳遞給外部查詢的WHERE子句。 外部查詢變為:

    該語句檢索的結果和前面硬編碼WHERE子句返回的結果相同。

    由上述語句得出訂購物品RGAN01的所有顧客ID: 100004 100005 .下一步檢索這些顧客ID的顧客信息。

    也可將其中的WHERE子句轉換為子查詢,就不用硬編碼這些顧客ID了。

    分析: DBMS實際上必須執行三條SELECT語句才能完成上述語句。最裡面的子查詢返回訂單號,此列用於外面的子查詢的WHERE子句。外面的子查詢返回顧客ID列,此顧客ID列用於最外層查詢的WHERE子句。最外層查詢返回最終所需的數據。

    由此可見,在WHERE子句中使用子查詢可編寫出功能強大靈活的SQL語句。對於能嵌套的子查詢的數目沒有限制,不過在實際應用中由於 性能的限制 ,不宜嵌套太多子查詢。

    注意: 作為子查詢的SELECT語句只能查詢 單個列 ,檢索多個列將返回錯誤。另外使用子查詢並不總是執行該類數據檢索的最有效方法。


    作為計算欄位使用子查詢

    使用子查詢的另一方法是創建計算欄位。

    示例: 需要顯示Customers表中每個顧客的訂單總數。訂單與相應的顧客ID都存儲在Orders表中。要執行這個操作,需要以下步驟:

    從Customers表中檢索顧客列表。

    對於檢索出的每個顧客,統計其在Orders表中的訂單數目。

    這里我們可以應用之前介紹的 SELECT COUNT(*) 對表中的行進行計數,並通過一條WHERE子句來過濾某個特定的顧客ID,僅對該顧客的訂單進行計數。

    如下對顧客1000001的訂單進行計數:

    要對每個顧客執行COUNT(*)需要將其作為一個子查詢,如下:

    分析: 該SELECT語句對Customers表中的每個顧客返回三列:cust_name、cust_state和orders。orders是一個 計算欄位 ,它由圓括弧中的子查詢建立。該子查詢對檢索出的每個顧客執行一次。此例中, 該子查詢執行了5次 ,因為檢索出了5個顧客。

    子查詢中的WHERE子句與之前使用的WHERE子句略有不同,因為它使用了 完全限定列名 ,而不只是列名(cust_id)。它指定表名和列名(Orders.cust_id和Customers.cust_id)。下面的WHERE子句告訴SQL,比較Orders表中的cust_id和當前正從Customers表中檢索出的cust_id:

    在有可能混淆列名時必須用一個 句點分隔表名和列名 。此例中,有兩個cust_id列:一個在Customers中,另一個在Orders中。若不採用完全限定名,DBMS會認為要對Orders表中的cust_id自身進行比較。因為:

    上述語句總返回Orders表中訂單的總數,而該 結果不是我們想要的 ,如下:

    由上可知,在構造語句時,若涉及到多個表,而不對同一列名加以區分則會引起DBMS拋出錯誤信息。

    好的做法是,當在SELECT語句中操作多個表時, 使用完全限定列名來避免歧義

    最後總結一下子查詢的特點:

    子查詢必須括在圓括弧中。

    子查詢的SELECT子句中只能有一個列,除非主查詢中有多個列,用於與子查詢選中的列相比較。

    子查詢不能使用ORDER BY,不過主查詢可以。在子查詢中,GROUP BY可以起到同ORDER BY相同的作用。

    返回多行數據的子查詢只能同多值操作符一起使用,比如IN操作符。

    SELECT 列表中不能包含任何對BLOB、ARRAY、CLOB或者NCLOB類型值的引用。

    子查詢不能直接用在聚合函數中。

    BETWEEN操作符不能同子查詢一起使用,但是BETWEEN操作符可以用在子查詢中。

    以上便是本次介紹的全部內容,下篇文章將為大家講解 連接 高級連接 的使用。

    我們下期再見!