SQL中的WITH語(yǔ)句:公共表達(dá)式CTE,用作臨時(shí)視圖或子查詢的定義方式,創(chuàng)建臨時(shí)的結(jié)果集
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
在SQL中,WITH語(yǔ)句通常被用作一種臨時(shí)視圖或子查詢的定義方式,可以創(chuàng)建臨時(shí)的結(jié)果集,這些結(jié)果集可以在主查詢中被引用。這種結(jié)構(gòu)也被稱為公共表達(dá)式(CTE:Common Table Expressions)。 01 語(yǔ)法結(jié)構(gòu)
02 應(yīng)用示例這里通過表data_learning.product_order(商品銷量表)、data_learning.product(商品信息表)、data_learning.product_category(商品二級(jí)分類信息表)進(jìn)行舉例,data_learning是之前創(chuàng)建的數(shù)據(jù)庫(kù)。數(shù)據(jù)表示例數(shù)據(jù)分別如下: data_learning.product_order(商品銷量表): data_learning.product(商品信息表): data_learning.product_category(商品二級(jí)分類信息表): 具體的創(chuàng)建數(shù)據(jù)庫(kù)和數(shù)據(jù)表的SQL語(yǔ)句可以查看我之前的文章。
2.1 示例1、封裝和重用臨時(shí)表通過WITH語(yǔ)句,我們可以封裝復(fù)雜的子查詢或視圖,使其可重用。這樣可以提高查詢的可讀性和可維護(hù)性。例如,假設(shè)我們需要在多個(gè)查詢中使用某個(gè)常用的邏輯操作。使用WITH語(yǔ)句,我們可以將該邏輯操作封裝為一個(gè)臨時(shí)表,并在需要的地方重復(fù)使用。 比如 問題:查詢商品數(shù)量超過5的商品類別,常見的SQL如下:
使用with語(yǔ)句可以轉(zhuǎn)換為:
在實(shí)際工作中,在涉及到要使用多個(gè)表的多個(gè)業(yè)務(wù)時(shí)間字段時(shí),我會(huì)先使用with語(yǔ)句建一個(gè)臨時(shí)結(jié)果集,再寫其他查詢語(yǔ)句。當(dāng)然,有建表權(quán)限的話可以直接建一個(gè)臨時(shí)表,再做查詢。 2.2 示例2、分解多業(yè)務(wù)步驟邏輯復(fù)雜的業(yè)務(wù)邏輯可能需要多個(gè)步驟來計(jì)算最終結(jié)果。使用WITH語(yǔ)句可以使這些步驟更清晰。問題:查詢銷量超過2000的商品類別,這個(gè)類別有哪些產(chǎn)品及對(duì)應(yīng)的產(chǎn)品價(jià)格和銷量時(shí)多少。
實(shí)際工作中涉及到的情況比這個(gè)步驟可能更多,此示例僅供理解WITH語(yǔ)句在分解多業(yè)務(wù)步驟邏輯中的應(yīng)用。 2.3 示例3、數(shù)據(jù)清洗WITH語(yǔ)句也可以用來進(jìn)行數(shù)據(jù)清洗,例如以下查詢將刪除重復(fù)的數(shù)據(jù)。 以下SQL語(yǔ)句僅供理解使用。
WITH語(yǔ)句在數(shù)據(jù)分析中非常有用,上述僅僅舉了幾個(gè)我在實(shí)際工作中比較常用的一些應(yīng)用場(chǎng)景,實(shí)際上其應(yīng)用場(chǎng)景遠(yuǎn)不止這些,也歡迎朋友們一起交流自己在實(shí)際工作中都如何使用WITH語(yǔ)句。 該文章在 2024/4/10 0:05:43 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |