精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

學 SQL 必須了解的十個高級概念

數據庫 SQL Server
隨著數據量持續增長,對合格數據專業人員的需求也會增長。具體而言,對SQL流利的專業人士的需求日益增長,而不僅僅是在初級層面。

隨著數據量持續增長,對合格數據專業人員的需求也會增長。具體而言,對SQL流利的專業人士的需求日益增長,而不僅僅是在初級層面。

因此,Stratascratch的創始人Nathan Rosidi以及我覺得我認為10個最重要和相關的中級到高級SQL概念。

1.常見表表達式(CTEs)

如果您想要查詢子查詢,那就是CTEs施展身手的時候 - CTEs基本上創建了一個臨時表。

使用常用表表達式(CTEs)是模塊化和分解代碼的好方法,與您將文章分解為幾個段落的方式相同。

請在Where子句中使用子查詢進行以下查詢。

SELECT 
 name,
 salary 
FROM
 People 
WHERE
 NAME IN ( SELECT DISTINCT NAME FROM population WHERE country = "Canada" AND city = "Toronto" ) 
 AND salary >= (
 SELECT
  AVG( salary ) 
 FROM
  salaries 
WHERE
 gender = "Female")

這似乎似乎難以理解,但如果在查詢中有許多子查詢,那么怎么樣?這就是CTEs發揮作用的地方。

with toronto_ppl as (
   SELECT DISTINCT name
   FROM population
   WHERE country = "Canada"
         AND city = "Toronto"
)
, avg_female_salary as (
   SELECT AVG(salary) as avgSalary
   FROM salaries
   WHERE gender = "Female"
)
SELECT name
       , salary
FROM People
WHERE name in (SELECT DISTINCT FROM toronto_ppl)
      AND salary >= (SELECT avgSalary FROM avg_female_salary)

現在很清楚,Where子句是在多倫多的名稱中過濾。如果您注意到,CTE很有用,因為您可以將代碼分解為較小的塊,但它們也很有用,因為它允許您為每個CTE分配變量名稱(即toronto_ppl和avg_female_salary)

同樣,CTEs允許您完成更高級的技術,如創建遞歸表。

2.遞歸CTEs.

遞歸CTE是引用自己的CTE,就像Python中的遞歸函數一樣。遞歸CTE尤其有用,它涉及查詢組織結構圖,文件系統,網頁之間的鏈接圖等的分層數據,尤其有用。

遞歸CTE有3個部分:

  • 錨構件:返回CTE的基本結果的初始查詢
  • 遞歸成員:引用CTE的遞歸查詢。這是所有與錨構件的聯盟
  • 停止遞歸構件的終止條件

以下是獲取每個員工ID的管理器ID的遞歸CTE的示例:

with org_structure as (
   SELECT id
          , manager_id
   FROM staff_members
   WHERE manager_id IS NULL
   UNION ALL
   SELECT sm.id
          , sm.manager_id
   FROM staff_members sm
   INNER JOIN org_structure os
      ON os.id = sm.manager_id

3.臨時函數

如果您想了解有關臨時函數的更多信息,請檢查此項,但知道如何編寫臨時功能是重要的原因:

  • 它允許您將代碼的塊分解為較小的代碼塊
  • 它適用于寫入清潔代碼
  • 它可以防止重復,并允許您重用類似于使用Python中的函數的代碼。

考慮以下示例:

SELECT name
       , CASE WHEN tenure < 1 THEN "analyst"
              WHEN tenure BETWEEN 1 and 3 THEN "associate"
              WHEN tenure BETWEEN 3 and 5 THEN "senior"
              WHEN tenure > 5 THEN "vp"
              ELSE "n/a"
         END AS seniority 
FROM employees

相反,您可以利用臨時函數來捕獲案例子句。

CREATE TEMPORARY FUNCTION get_seniority(tenure INT64) AS (
   CASE WHEN tenure < 1 THEN "analyst"
        WHEN tenure BETWEEN 1 and 3 THEN "associate"
        WHEN tenure BETWEEN 3 and 5 THEN "senior"
        WHEN tenure > 5 THEN "vp"
        ELSE "n/a"
   END
);
SELECT name
       , get_seniority(tenure) as seniority
FROM employees

通過臨時函數,查詢本身更簡單,更可讀,您可以重復使用資歷函數!

4.使用CASE WHEN樞轉數據

您很可能會看到許多要求在陳述時使用CASE WHEN的問題,這只是因為它是一種多功能的概念。如果要根據其他變量分配某個值或類,則允許您編寫復雜的條件語句。

較少眾所周知,它還允許您樞轉數據。例如,如果您有一個月列,并且您希望為每個月創建一個單個列,則可以使用語句追溯數據的情況。

示例問題:編寫SQL查詢以重新格式化表,以便每個月有一個收入列。

Initial table:  
+------+---------+-------+  
| id   | revenue | month |  
+------+---------+-------+  
| 1    | 8000    | Jan   |  
| 2    | 9000    | Jan   |  
| 3    | 10000   | Feb   |  
| 1    | 7000    | Feb   |  
| 1    | 6000    | Mar   |  
+------+---------+-------+  
  
Result table:  
+------+-------------+-------------+-------------+-----+-----------+  
| id   | Jan_Revenue | Feb_Revenue | Mar_Revenue | ... | Dec_Revenue |  
+------+-------------+-------------+-------------+-----+-----------+  
| 1    | 8000        | 7000        | 6000        | ... | null        |  
| 2    | 9000        | null        | null        | ... | null        |  
| 3    | null        | 10000       | null        | ... | null        |  
+------+-------------+-------------+-------------+-----+-----------+

5.EXCEPT vs NOT IN

除了幾乎不相同的操作。它們都用來比較兩個查詢/表之間的行。所說,這兩個人之間存在微妙的細微差別。

首先,除了過濾刪除重復并返回不同的行與不在中的不同行。

同樣,除了在查詢/表中相同數量的列,其中不再與每個查詢/表比較單個列。

6.自聯結

一個SQL表自行連接自己。你可能會認為沒有用,但你會感到驚訝的是這是多么常見。在許多現實生活中,數據存儲在一個大型表中而不是許多較小的表中。在這種情況下,可能需要自我連接來解決獨特的問題。

讓我們來看看一個例子。

示例問題:給定下面的員工表,寫出一個SQL查詢,了解員工的工資,這些員工比其管理人員工資更多。對于上表來說,Joe是唯一一個比他的經理工資更多的員工。

+----+-------+--------+-----------+  
| Id | Name  | Salary | ManagerId |  
+----+-------+--------+-----------+  
| 1  | Joe   | 70000  | 3         |  
| 2  | Henry | 80000  | 4         |  
| 3  | Sam   | 60000  | NULL      |  
| 4  | Max   | 90000  | NULL      |  
+----+-------+--------+-----------+Answer:  
SELECT  
    a.Name as Employee  
FROM  
    Employee as a  
    JOIN Employee as b on a.ManagerID = b.Id  
WHERE a.Salary > b.Salary

7.Rank vs Dense Rank vs Row Number

它是一個非常常見的應用,對行和價值進行排名。以下是公司經常使用排名的一些例子:

  • 按購物,利潤等數量排名最高值的客戶
  • 排名銷售數量的頂級產品
  • 以最大的銷售排名頂級國家
  • 排名在觀看的分鐘數,不同觀眾的數量等觀看的頂級視頻。

在SQL中,您可以使用幾種方式將“等級”分配給行,我們將使用示例進行探索。考慮以下Query和結果:

SELECT Name  
 , GPA  
 , ROW_NUMBER() OVER (ORDER BY GPA desc)  
 , RANK() OVER (ORDER BY GPA desc)  
 , DENSE_RANK() OVER (ORDER BY GPA desc)  
FROM student_grades

ROW_NUMBER()返回每行開始的唯一編號。當存在關系時(例如,BOB vs Carrie),ROW_NUMBER()如果未定義第二條標準,則任意分配數字。

Rank()返回從1開始的每行的唯一編號,除了有關系時,等級()將分配相同的數字。同樣,差距將遵循重復的等級。

dense_rank()類似于等級(),除了重復等級后沒有間隙。請注意,使用dense_rank(),Daniel排名第3,而不是第4位()。

8.計算Delta值

另一個常見應用程序是將不同時期的值進行比較。例如,本月和上個月的銷售之間的三角洲是什么?或者本月和本月去年這個月是什么?

在將不同時段的值進行比較以計算Deltas時,這是Lead()和LAG()發揮作用時。

這是一些例子:

# Comparing each month's sales to last month  
SELECT month  
       , sales  
       , sales - LAG(sales, 1) OVER (ORDER BY month)  
FROM monthly_sales  
# Comparing each month's sales to the same month last year  
SELECT month  
       , sales  
       , sales - LAG(sales, 12) OVER (ORDER BY month)  
FROM monthly_sales

9.計算運行總數

如果你知道關于row_number()和lag()/ lead(),這可能對您來說可能不會驚喜。但如果你沒有,這可能是最有用的窗口功能之一,特別是當您想要可視化增長!

使用具有SUM()的窗口函數,我們可以計算運行總數。請參閱下面的示例:

SELECT Month  
       , Revenue  
       , SUM(Revenue) OVER (ORDER BY Month) AS Cumulative  
FROM monthly_revenue

10.日期時間操縱

您應該肯定會期望某種涉及日期時間數據的SQL問題。例如,您可能需要將數據分組組或將可變格式從DD-MM-Yyyy轉換為簡單的月份。

您應該知道的一些功能是:

  • 提煉
  • 日元
  • date_add,date_sub.
  • date_trunc.

示例問題:給定天氣表,寫一個SQL查詢,以查找與其上一個(昨天)日期相比的溫度較高的所有日期的ID。

+---------+------------------+------------------+  
| Id(INT) | RecordDate(DATE) | Temperature(INT) |  
+---------+------------------+------------------+  
|       1 |       2015-01-01 |               10 |  
|       2 |       2015-01-02 |               25 |  
|       3 |       2015-01-03 |               20 |  
|       4 |       2015-01-04 |               30 |  
+---------+------------------+------------------+Answer:  
SELECT  
    a.Id  
FROM  
    Weather a,  
    Weather b  
WHERE  
    a.Temperature > b.Temperature  
    AND DATEDIFF(a.RecordDate, b.RecordDate) = 1


責任編輯:華軒 來源: SQL數據庫開發
相關推薦

2022-06-12 23:43:19

SQL數據函數

2022-03-22 23:18:55

SQL技術內部概念

2021-03-11 09:02:37

SQL數據庫數據

2025-08-14 02:00:00

2024-03-20 17:35:42

2020-08-11 17:14:31

數據庫SQL技術

2011-01-28 15:11:15

PowerShell

2009-03-26 09:12:30

軟件架構師領域云計算

2023-07-02 14:21:06

PythonMatplotlib數據可視化庫

2021-04-16 10:28:54

SQLJava代碼

2024-11-11 08:00:00

PyTorch深度學習

2011-05-11 15:28:05

2022-02-11 20:39:13

物聯網人工智能智能城市

2011-12-05 10:38:37

Java面試

2024-05-21 11:14:20

Python編程

2022-11-07 16:06:15

TypeScript開發技巧

2010-12-22 09:16:31

SQL Server專

2024-05-17 12:43:49

Python編程開發

2021-09-15 09:20:37

Python函數代碼

2022-06-08 10:42:34

ReduceJavaScript技巧
點贊
收藏

51CTO技術棧公眾號

91社区在线观看播放| 国产三级精品三级在线观看| 不卡精品视频| 亚洲综合一区在线| 精品视频高清无人区区二区三区| 亚洲伊人成人网| 日韩在线观看电影完整版高清免费悬疑悬疑| 欧美一区二区在线免费观看| 免费看黄在线看| 91高清在线| av高清不卡在线| 成人精品久久久| 欧美日韩乱国产| 日韩片欧美片| 日韩精品免费一线在线观看| 91亚洲一区二区| 午夜精品成人av| 亚洲福中文字幕伊人影院| 色综合影院在线观看| 国产女人18毛片18精品| 亚洲一区二区三区高清| 免费91麻豆精品国产自产在线观看| 黄色网址在线视频| 成人免费观看49www在线观看| 日韩欧美在线中文字幕| 搞av.com| 中文字幕中文字幕在线中高清免费版| 久久久99精品免费观看| 亚洲a成v人在线观看| 波多野结衣黄色网址| 亚洲国产日本| 久久久999成人| 青青青手机在线视频| 国产99久久| 亚洲激情视频在线播放| 香蕉在线观看视频| 国产美女精品视频免费播放软件| 在线观看日韩精品| 农村妇女精品一二区| aa国产成人| 性做久久久久久| 国产 国语对白 露脸| 麻豆系列在线观看| 国产精品久久久久久久午夜片 | 中文字幕有码视频| 乱人伦精品视频在线观看| 97国产精品免费视频| 久久久久成人网站| 国产精品红桃| 欧美激情18p| 日韩免费一二三区| 亚洲高清二区| 91黑丝在线观看| 午夜精品三级久久久有码| 亚洲免费播放| 51ⅴ精品国产91久久久久久| 日韩污视频在线观看| 国产日韩欧美一区二区三区在线观看| 久久久久久亚洲精品不卡| 久久精品久久国产| 精久久久久久| 91国内免费在线视频| 国产午夜免费福利| 日韩国产成人精品| 国产欧美一区二区三区视频| 国产又粗又黄又爽| 精品亚洲免费视频| 不卡一卡2卡3卡4卡精品在| 草草视频在线播放| 99精品视频在线免费观看| 久久国产精品高清| av福利在线播放| 一色桃子久久精品亚洲| 国产a级黄色大片| av影片在线| 日本黄色一区二区| 最新国产黄色网址| 日本伊人久久| 日韩黄在线观看| 亚洲午夜精品久久久久久高潮| 成人三级视频| 日韩在线中文字幕| 久久久久久久久久一区二区三区| 亚洲每日更新| 国产欧美精品在线播放| 国产免费高清av| av亚洲精华国产精华| 日韩精品另类天天更新| a视频在线播放| 色综合天天综合色综合av | 亚洲午夜国产成人| 亚洲国产成人精品久久久国产成人一区 | 在线视频日本亚洲性| 日本一级二级视频| 美女91精品| 亚洲专区国产精品| 激情小说 在线视频| 亚洲欧美国产77777| 丰满人妻中伦妇伦精品app| 免费视频观看成人| 日韩电影视频免费| 久久免费看少妇高潮v片特黄| 国产精品毛片在线看| 成人免费看片视频| 国产精品秘入口| 亚洲福中文字幕伊人影院| 欧美日韩中文不卡| 婷婷成人影院| 欧美国产日韩视频| 国产亚洲久一区二区| 99国产精品久| 久久久久久久久久久综合| 日韩一区精品| 日韩av最新在线| 一起操在线播放| 媚黑女一区二区| 国产精品一区二区三区免费观看 | 午夜精品久久久久久久久久久久久 | 久久国产欧美日韩精品| 精品乱码一区二区三区| 天天干在线视频论坛| 在线免费av资源| 国产成人在线视频播放| 欧美少妇一区| av福利在线导航| 亚洲一区亚洲| 91网在线免费观看| 国产系列在线观看| 亚洲不卡av一区二区三区| 在线一区亚洲| 三级在线看中文字幕完整版| 7878成人国产在线观看| 五月婷六月丁香| 99精品热6080yy久久| 亚洲自拍另类欧美丝袜| 高h视频在线观看| 欧美日韩一级片网站| 欧美日韩国产页| 97在线国产视频| 欧美成人家庭影院| 国产亚洲精品va在线观看| 国产高清中文字幕| 91在线一区二区| 国产精品va在线观看无码| 97人人干人人| 免费在线看黄网址| 激情亚洲综合在线| 亚洲精品在线观看免费| 欧美极品影院| 亚洲欧美一区二区三区在线| 黄色在线免费观看| 久久综合九色综合97婷婷女人| 亚洲涩涩在线| 亚洲一区国产视频| 91人人澡人人爽| 狠狠88综合久久久久综合网| 96pao国产成视频永久免费| 老司机午夜在线| 欧美美女一区二区| 亚洲一二av| 中文字幕第一区二区| av免费中文字幕| 亚洲精品进入| 国产精品久久久久久影视| 超碰国产在线观看| 欧美精选午夜久久久乱码6080| 韩国成人动漫在线观看| 免费不卡av| 亚洲国语精品自产拍在线观看| 免费日韩一级片| 久久久99久久精品欧美| 三级性生活视频| 狠狠噜噜久久| 欧美一区二区三区四区五区六区| 成人午夜在线| 欧美成人一二三| 午夜视频福利在线观看| 一本大道综合伊人精品热热| 国产小视频你懂的| 成人网在线免费视频| 国产精品97在线| 国产精品7m凸凹视频分类| 成人黄色在线免费观看| 欧美xx视频| 久久国产精品久久久久| 三级视频网站在线| 欧美精品国产精品| 亚洲精品国产精品乱码| 国产精品视频第一区| www.黄色网| 青青草原综合久久大伊人精品优势| 蜜桃视频成人在线观看| 日韩中出av| 亚洲字幕一区二区| 成人看片网页| 欧美精品久久久久久久免费观看| 九色在线视频蝌蚪| 精品日韩一区二区三区免费视频| 天天干天天色综合| 一二三区精品福利视频| 日韩视频在线观看免费视频| 成人毛片老司机大片| 91女神在线观看| 亚洲一区视频| 菠萝蜜视频在线观看入口| 精品视频亚洲| 精品国产乱码久久久久久蜜柚| 九七电影院97理论片久久tvb| 久久久久成人精品| 免费观看在线午夜影视| 亚洲欧美国产精品| 色丁香婷婷综合久久| 91精品国产欧美一区二区| 九九热在线免费观看| 亚洲福利一区二区三区| 欧美黑吊大战白妞| 国产精品毛片久久久久久| 四虎永久免费影院| proumb性欧美在线观看| 天堂在线精品视频| 捆绑紧缚一区二区三区视频| 无码无遮挡又大又爽又黄的视频| 精久久久久久| 亚洲精品国产suv一区88| 久久一区二区中文字幕| 日本在线观看一区二区| 婷婷精品视频| 久久超碰亚洲| 网友自拍一区| 精品无码久久久久久久动漫| 豆花视频一区二区| 成人在线观看av| 日韩欧美另类中文字幕| 亚洲一区亚洲二区亚洲三区| 91成人在线精品视频| 国产精品自在线| 日本在线视频一区二区| 热久久视久久精品18亚洲精品| ****av在线网毛片| 欧美激情图片区| 秋霞在线视频| 欧美激情视频在线免费观看 欧美视频免费一 | 欲香欲色天天天综合和网| 国外成人在线视频| 2021中文字幕在线| 欧美一级在线播放| 亚洲一二三四| 国产精品第一页在线| 国产第一精品| 国产综合视频在线观看| 91精品网站在线观看| 91在线视频精品| 欧美一区一区| 国产精品二区在线| 97视频一区| 精品国产乱码久久久久久108| 亚洲人成亚洲精品| 四虎影院一区二区三区| 久久中文字幕二区| 美女在线免费视频| 亚洲黄页一区| 久草精品在线播放| 老司机精品视频在线| 国产探花在线观看视频| 大胆亚洲人体视频| 91视频啊啊啊| 亚洲国产精品高清| 国产高清在线免费观看| 亚洲大片精品永久免费| 香蕉影院在线观看| 欧美情侣在线播放| 亚洲经典一区二区| 亚洲欧美综合v| 老司机免费在线视频| 欧美精品久久一区二区| 久久久成人av毛片免费观看| 成人精品在线视频| 美女一区2区| 亚洲精品成人三区| 狠狠入ady亚洲精品经典电影| 国产第一页视频| 国产一区二区三区久久久| 国产精品伦子伦| 国产精品伦理在线| 69精品久久久| 欧美日本一区二区在线观看| 亚洲乱码国产乱码精品精软件| 亚洲免费影视第一页| 免费av在线| 欧美在线欧美在线| 精品国产乱码一区二区三区| 久久久久久国产精品免费免费| 国产精品国产三级国产在线观看| 国产3p露脸普通话对白| 免费的成人av| 中文字幕 亚洲一区| 自拍偷拍国产亚洲| 国产性生活视频| 精品国产凹凸成av人导航| 1pondo在线播放免费| 91高清视频免费观看| 欧美一区一区| 亚洲一区美女| 久久综合影视| 荫蒂被男人添免费视频| 亚洲私人黄色宅男| 中文字幕精品无码亚| 亚洲精品自拍偷拍| 精灵使的剑舞无删减版在线观看| 国产精品视频久久久| 日韩精品欧美大片| 欧美精品卡一卡二| 国产综合色精品一区二区三区| 国产一二三四五区| 精品久久久久久国产91| www.欧美国产| 久久久av网站| 精品久久在线| 人偷久久久久久久偷女厕| 国产精品久久久亚洲一区| 国产精品一区二区无码对白| 亚洲欧美区自拍先锋| 91精品中文字幕| 中文字幕av一区中文字幕天堂 | 国产天堂在线| 8090成年在线看片午夜| 大伊香蕉精品在线品播放| 水蜜桃在线免费观看| 久久99精品国产.久久久久| 免费看黄色三级| 欧洲另类一二三四区| 国产视频在线看| 国产脚交av在线一区二区| 亚洲永久精品唐人导航网址| 国内自拍在线观看| 久久只精品国产| 日本视频在线观看免费| 精品丝袜一区二区三区| 亚洲天堂电影| 欧美一二三四五区| 可以看av的网站久久看| 亚洲精品国产熟女久久久| 欧美视频中文字幕在线| 日本aaa在线观看| 日本中文字幕不卡免费| 国产最新精品| 久久久久久久久久久久91| 国产精品美女久久久久aⅴ| 中文字幕男人天堂| 久久手机精品视频| 中文字幕一区二区三区中文字幕 | 黄色片在线观看网站| 日韩一区二区三区免费看 | 亚洲一区二区高清| 黄色三级网站在线观看| 97久久伊人激情网| 九九精品久久| 日本三级黄色网址| 一区二区在线观看视频在线观看| 精品国产伦一区二区三| 午夜精品久久久久久久99黑人| 亚洲另类av| 日韩av手机版| 亚洲精品中文在线影院| 手机在线观看毛片| 国产精品r级在线| 91九色精品| 亚洲av熟女高潮一区二区| 91国在线观看| a级影片在线观看| 精品国产91亚洲一区二区三区www 精品国产_亚洲人成在线 | 日韩国产亚洲欧美| 久久深夜福利免费观看| 福利片在线一区二区| 男人透女人免费视频| 成人欧美一区二区三区视频网页| 精品国自产拍在线观看| 欧美诱惑福利视频| 日韩dvd碟片| 国产chinese中国hdxxxx| 欧洲一区二区三区免费视频| 麻豆系列在线观看| 久久精品国产综合精品| 精品一区二区三区av| 国产成人精品片| 日韩中文字幕网址| 国产精品天天看天天狠| 中文字幕天天干| 红桃av永久久久| 超碰在线caoporn| 老牛影视免费一区二区| 国产做a爰片久久毛片| 日韩久久中文字幕| 久久人人爽人人爽爽久久| 九九亚洲精品| 欧美午夜精品一区二区| 欧美日韩国产成人在线91 | 成人黄色片在线| 国产亚洲激情| 欧美日韩一级在线观看|