欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线

程序員需要知道的高級SQL概念有哪些

這篇文章主要講解了“程序員需要知道的高級SQL概念有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“程序員需要知道的高級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   , salaryFROM PeopleWHERE 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 seniorityFROM 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

程序員需要知道的高級SQL概念有哪些

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
程序員需要知道的高級SQL概念有哪些
10.日期時間操縱

您應該肯定會期望某種涉及日期時間數據的SQL問題。例如,您可能需要將數據分組組或將可變格式從DD-MM-Yyyy轉換為簡單的月份。YYYY-MM-DD 的黑鍋,你要清楚。
您應該知道的一些功能是:

  • 提煉

  • 日元

  • 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概念有哪些”的內容了,經過本文的學習后,相信大家對程序員需要知道的高級SQL概念有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!

新聞名稱:程序員需要知道的高級SQL概念有哪些
本文URL:http://m.kartarina.com/article36/jpsipg.html

成都網站建設公司_創新互聯,為您提供搜索引擎優化Google、定制網站、外貿網站建設、用戶體驗、靜態網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

小程序開發
欧美日韩激情_美女国产一区_国产精品久久久久影院日本_69xxx在线
国产三级三级三级精品8ⅰ区| 欧美肥胖老妇做爰| 精品一区二区三区视频在线观看 | 91色porny在线视频| 久久福利视频一区二区| 蜜桃一区二区三区四区| 日日夜夜免费精品| 麻豆成人久久精品二区三区红| 亚洲成av人片在线| 日韩经典一区二区| 裸体在线国模精品偷拍| 国产一区二区主播在线| 国产成人av网站| 成人免费视频caoporn| 99re6这里只有精品视频在线观看| av在线一区二区| 欧美制服丝袜第一页| 欧美少妇一区二区| 欧美一区二区三区公司| 欧美成人vps| 国产不卡视频在线播放| 成人av午夜影院| 色爱区综合激月婷婷| 欧美日本乱大交xxxxx| 久久精品二区亚洲w码| 国产综合成人久久大片91| 国产精品一区三区| 91在线精品一区二区三区| 欧美色老头old∨ideo| 欧美一卡二卡三卡| 欧美激情在线观看视频免费| 亚洲男同1069视频| 捆绑变态av一区二区三区| 国产精品一二三区在线| 色偷偷成人一区二区三区91| 宅男在线国产精品| 国产精品成人网| 日韩电影在线观看网站| www.成人网.com| 日韩你懂的在线播放| 一区二区三区在线视频观看58 | 麻豆极品一区二区三区| 波多野结衣欧美| 91麻豆精品国产91久久久久久久久| 久久综合九色欧美综合狠狠| 亚洲综合免费观看高清完整版| 国内成人免费视频| 欧美日韩午夜在线| 亚洲天堂福利av| 国产综合一区二区| 欧美日韩国产乱码电影| 中文字幕第一区综合| 免费人成网站在线观看欧美高清| www.在线成人| 久久奇米777| 日韩av电影一区| 在线视频中文字幕一区二区| 中文字幕一区二区三中文字幕 | 国产精品色哟哟| 久草这里只有精品视频| 欧美美女激情18p| 亚洲欧洲制服丝袜| 成av人片一区二区| 久久精品一区二区三区av| 奇米888四色在线精品| 欧洲人成人精品| 亚洲精品亚洲人成人网在线播放| 国产成人精品午夜视频免费| 精品福利一区二区三区| 青椒成人免费视频| 欧美一区二区视频在线观看2022| 亚洲线精品一区二区三区| 91丨九色porny丨蝌蚪| 中文字幕在线不卡| 97久久超碰精品国产| 国产精品成人网| 色婷婷亚洲精品| 亚洲一区在线看| 欧美二区三区91| 视频一区国产视频| 日韩视频免费直播| 精品午夜久久福利影院| 精品成人免费观看| 国产精品77777| 国产精品久久久久影院色老大| 国产69精品久久99不卡| 国产精品久久久久婷婷| 色综合久久久网| 天天综合天天综合色| 日韩欧美卡一卡二| 国模一区二区三区白浆| 国产精品午夜在线观看| 91香蕉视频污| 欧美色电影在线| 日韩黄色一级片| 久久久久久99精品| a级精品国产片在线观看| 一区二区三区欧美| 久久精品久久久精品美女| 欧美成人a在线| 成人黄色一级视频| 久久精品国产99国产精品| 日韩一级二级三级精品视频| 国产一区二区电影| 亚洲三级小视频| 欧美一二三区在线| 成人激情小说乱人伦| 亚洲一区二区av电影| 欧美xfplay| 色综合激情五月| 老司机精品视频导航| 18成人在线观看| 欧美成人女星排行榜| 99精品视频一区二区| 日本美女一区二区| 日韩美女精品在线| 精油按摩中文字幕久久| 亚洲女性喷水在线观看一区| 欧美大黄免费观看| 色婷婷av一区二区三区之一色屋| 日本特黄久久久高潮| 国产精品超碰97尤物18| 日韩视频免费直播| 91福利精品第一导航| 丁香啪啪综合成人亚洲小说| 日本午夜精品一区二区三区电影| 亚洲人123区| 欧美激情在线观看视频免费| 精品亚洲国产成人av制服丝袜 | 国产欧美一区在线| 欧美日韩国产区一| 一本大道久久a久久综合婷婷| 国产剧情一区二区| 日韩**一区毛片| 亚洲综合一区在线| 中文字幕永久在线不卡| 国产欧美日韩视频在线观看| 日韩欧美自拍偷拍| 亚洲午夜免费福利视频| 亚洲人成电影网站色mp4| 国产欧美精品一区aⅴ影院| 日韩欧美123| 制服丝袜一区二区三区| 色婷婷综合五月| 色婷婷综合五月| 日本韩国精品在线| 不卡的电影网站| 国产91清纯白嫩初高中在线观看| 美国欧美日韩国产在线播放| 麻豆国产91在线播放| 91精品婷婷国产综合久久性色| 91在线国内视频| 成人av电影在线观看| 成人午夜又粗又硬又大| 成人久久18免费网站麻豆| 成人在线视频首页| 国产成人在线视频网址| 成人免费视频app| 99re8在线精品视频免费播放| av在线一区二区三区| 91影院在线观看| 在线观看成人小视频| 亚洲www啪成人一区二区麻豆| 亚洲成人自拍网| 日本网站在线观看一区二区三区| 一区二区三区高清不卡| 成人av午夜电影| 972aa.com艺术欧美| 国产福利一区二区| 国产精品短视频| 精品视频全国免费看| 777奇米四色成人影色区| 日韩欧美资源站| 国产欧美视频在线观看| 国产精品国产三级国产普通话99| 亚洲视频一区二区免费在线观看| 亚洲男同1069视频| 免费成人深夜小野草| 国产不卡在线视频| 1000精品久久久久久久久| 亚洲一卡二卡三卡四卡五卡| 麻豆国产精品777777在线| 粉嫩一区二区三区性色av| 色视频一区二区| 欧美一区二区观看视频| 中文字幕第一区综合| 亚洲美女屁股眼交3| 毛片av一区二区| 成人福利视频在线看| 欧美精品久久久久久久多人混战 | 欧美日韩日日骚| 精品久久久久久最新网址| 国产欧美精品日韩区二区麻豆天美| 一区二区三区精品久久久| 精品一区二区成人精品| 成人国产精品免费观看视频| 欧美一区二区三区四区在线观看| 亚洲国产激情av| 久久精品国产77777蜜臀| 欧美亚洲一区二区在线|