国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

避免!5個編寫SQL查詢時常出現的錯誤

數據庫 SQL Server
SQL被廣泛應用于數據分析和數據提取。易上手,受到業內人士的一致好評。盡管剛開始編寫SQL相當容易,但是出錯率也是相當的高。

 SQL被廣泛應用于數據分析和數據提取。易上手,受到業內人士的一致好評

盡管剛開始編寫SQL相當容易,但是出錯率也是相當的高。

[[284506]]

下面是小芯整理的,在編寫SQL查詢代碼時大家經常犯的5個錯誤。

示例很短,可能看起來很簡單。但是,在處理更大的查詢時,這些錯誤可就不會一目了然了。其中一些示例是特定于AWS Redshift的,而另一些則會出現在其他SQL數據庫(Postgres、MySQL等)。這些示例應該在本地數據庫上運行,或者可以使用SQLFiddle在線運行。

示例SQL查詢可下載。

設定

創建兩個臨時表,其中有幾個條目有助于處理示例。

Sales表

該表包含帶有時間戳、產品、價格等的銷售條目。請注意,key列是唯一的,其他列中的值可以重復(例如ts列)。

 

  1. DROP TABLE IF EXISTSsales; 
  2.  
  3. CREATE TEMPORARY TABLE sales 
  4.  
  5.  
  6. key varchar(6), 
  7.  
  8. ts timestamp
  9.  
  10. product integer
  11.  
  12. completed boolean, 
  13.  
  14. price float 
  15.  
  16. );INSERT INTO sales 
  17.  
  18. VALUES ('sale_1''2019-11-08 00:00', 0, TRUE, 1.1), 
  19.  
  20. ('sale_2''2019-11-08 01:00', 0, FALSE,1.2), 
  21.  
  22. ('sale_3''2019-11-08 01:00', 0, TRUE,1.3), 
  23.  
  24. ('sale_4''2019-11-08 01:00', 1, FALSE,1.4), 
  25.  
  26. ('sale_5''2019-11-08 02:00', 1, TRUE,1.5), 
  27.  
  28. ('sale_6''2019-11-08 02:00', 1, TRUE,1.5);SELECT * FROM sales; 

 

 

避免!5個編寫SQL查詢時常出現的錯誤

 

Hourly delay表

該表包含某一天每小時的延遲時間。請注意,ts列在下表中是唯一的。

 

  1. DROP TABLE IF EXISTShourly_delay; 
  2.  
  3. CREATE TEMPORARY TABLE hourly_delay 
  4.  
  5.  
  6. ts timestamp
  7.  
  8. delay float 
  9.  
  10. ); 
  11.  
  12. INSERT INTO hourly_delay 
  13.  
  14. VALUES ('2019-11-08 00:00', 80.1), 
  15.  
  16. ('2019-11-08 01:00', 100.2), 
  17.  
  18. ('2019-11-08 02:00', 70.3);SELECTFROM hourly_delay; 

 

 

避免!5個編寫SQL查詢時常出現的錯誤

 

1.按相同時間戳排序

檢索每種產品最近一次的售價:

 

  1. SELECT price 
  2.  
  3. FROM (SELECT price, row_number() OVER (PARTITION BYproduct ORDER BY ts DESCAS ix FROM sales) ASq1 
  4.  
  5. WHERE ix = 1; 

 

避免!5個編寫SQL查詢時常出現的錯誤

 

 

以上查詢的問題是多個銷售具有相同的時間戳。此查詢在相同數據上的連續運行可能得出不同的結果。下圖可見,產品0在2019-11-11-08 01:00有兩次銷售,價格分別為1.2和1.3。

 

避免!5個編寫SQL查詢時常出現的錯誤

 

用下一個錯誤修復這個查詢:)

2. 根據條件計算平均值

計算完成銷售的產品的平均價格。值是(1.1 + 1.3 + 1.5 + 1.5)/ 4,即1.35。

 

  1. SELECT avg(price) 
  2.  
  3. FROM (SELECT CASE WHEN completed = TRUETHEN price else 0 END AS price FROM sales) ASq1; 

 

當運行查詢時,值為0.9。為什么?因為發生了這一計算:(1.1+0+1.3+0+1.5+1.5)/6是0.9。查詢中的錯誤是,將0設置為不應包含的項。應使用NULL而不是0。

 

  1. SELECT avg(price) 
  2.  
  3. FROM (SELECT CASE WHEN completed = TRUETHEN price else NULL END AS price FROMsales) AS q1; 

 

當前,輸出和預計一樣是1.35。

3.計算整數列的平均值

計算含有整數的product列的平均值。

 

  1. SELECT avg(product) 
  2.  
  3. FROM sales; 

 

Product列中有3個0和3個1,預估平均值為0.5。大多數數據庫(例如最新版本的Postgres)將返回0.5,但是Redshift將返回0,因為它不會自動將product列強制轉換為float。因此需要將其強制轉換為float類型:

 

  1. SELECT avg(product::FLOAT
  2.  
  3. FROM sales; 

 

4. 內連接

假設要對每天的所有銷售延遲進行匯總,并計算每天的平均銷售價格。

 

  1. SELECT t2.ts::DATEsum(t2.delay),avg(t1.price) 
  2.  
  3. FROM hourly_delay AS t2 
  4.  
  5. INNER JOIN sales ASt1 ON t1.ts = t2.ts 
  6.  
  7. GROUP BY t2.ts::DATE

 

 

避免!5個編寫SQL查詢時常出現的錯誤

 

結果是錯誤的!以上查詢將hourly_delay表中的delay列乘以倍數,如下圖所示。這是因為按時間戳連接,該時間戳在hourly_delay表中是唯一的,但在sales表中會重復。

 

避免!5個編寫SQL查詢時常出現的錯誤

 

為了修復這個問題,要在一個單獨的子查詢中為每個表計算統計信息,然后連接匯總。這使得時間戳在兩個表中都是唯一的。

 

  1. SELECT t1.ts, daily_delay, avg_price 
  2.  
  3. FROM (SELECT t2.ts::DATEsum(t2.delay) ASdaily_delay FROM hourly_delay AS t2 GROUP BYt2.ts::DATEAS t2 
  4.  
  5. INNER JOIN (SELECTts::DATE AS ts, avg(price) AS avg_price FROM sales GROUPBY ts::DATEAS t1 ON t1.ts = t2.ts; 

 

 

避免!5個編寫SQL查詢時常出現的錯誤

 

5.將列添加到ORDER BY

對上述錯誤的補救是顯而易見的。將key列添加到ORDER BY,這樣一來,查詢結果就可以在相同數據上重復出現——快速修復。

 

  1. SELECT price 
  2.  
  3. FROM (SELECT price, row_number() OVER (PARTITION BYproduct ORDER BY ts, key DESCAS ix FROMsales) AS q1 
  4.  
  5. WHERE ix = 1; 

 

 

避免!5個編寫SQL查詢時常出現的錯誤

 

為什么查詢結果不同于上一次運行?在進行“快速修復”時,key列被放在了ORDER BY中的錯誤位置。它應該在DESC語句之后,而不是之前。查詢現在將返回第一筆銷售,而不是最后一筆銷售。再進行一次修正。

 

  1. SELECT product, price 
  2.  
  3. FROM (SELECT product, price, row_number() OVER (PARTITION BYproduct ORDER BY ts DESCkeyAS ix FROMsales) AS q1 
  4.  
  5. WHERE ix = 1; 

 

 

避免!5個編寫SQL查詢時常出現的錯誤

 

本次修復使結果可重復。

這些都是大家經常踩雷的SQL錯誤和解決方案。不知道你是否也感同身受,或者還有其他有關SQL查詢的趣事?記得給小芯分享喲~

責任編輯:華軒 來源: 今日頭條
相關推薦

2023-02-02 08:00:00

SQLJava開發

2023-01-09 15:16:17

2015-03-19 11:53:57

JavaSQL數據庫開發

2018-04-25 06:21:57

多云云計算IT

2021-03-09 09:52:55

技術React Hooks'數據

2020-10-20 08:00:29

AWS云安全數據安全

2021-09-16 09:05:45

SQL注入漏洞網絡攻擊

2014-04-22 09:33:49

云計算云安全云遷移

2020-02-28 08:29:34

IT網絡信息

2016-12-05 09:20:37

機器學習算法

2009-12-28 16:03:42

編寫ADO.NET

2019-05-16 08:17:47

多云存儲云計算

2014-12-12 10:06:41

Java

2015-09-01 16:27:31

薪資錯誤

2015-08-27 16:15:10

程序員面試錯誤

2021-08-02 12:04:39

測試測試框架Cypress

2020-10-04 13:29:00

SQL數據庫工具

2016-12-28 17:53:29

大數據數據可視化圖像

2010-10-20 11:08:52

職場

2019-08-13 11:32:55

物聯網技術大數據
點贊
收藏

51CTO技術棧公眾號

看欧美ab黄色大片视频免费| 阳光姐妹淘韩国版| 中文字幕不卡av| 欧美精品人人做人人爱视频| 日本黄在线观看| 精品日韩免费| free欧美| 国产在线观看一区二区| 欧美一区二区国产| 久久久综合亚洲91久久98| 飘雪影院手机免费高清版在线观看| jiyouzz国产精品久久| 欧美成人精品影院| 欧美一级片中文字幕| 97久久中文字幕| 综合久久久久综合| 成人在线精品视频| a√在线中文网新版址在线| 久久综合九色| 日韩av在线网站| 久久久久久久中文| 亚洲精品无吗| 3atv在线一区二区三区| 最近中文字幕免费mv| 国产三级一区| 亚洲欧洲综合另类| 国产伦精品一区二区三区照片91 | 欧美视频一二三区| 午夜精品短视频| 伊人久久亚洲| 色婷婷综合久久久中文一区二区| 亚洲精品国产一区| 日韩欧美激情电影| 欧美专区日韩专区| 成人黄色片免费| 中文字幕亚洲影视| 国产精品第一视频| 1区2区在线观看| 99在线精品观看| 日韩视频第二页| 136国产福利精品导航网址| 亚洲网在线观看| 中文字幕在线视频免费观看| 可以免费看不卡的av网站| 亚洲国产一区二区精品视频 | 久久精品色图| 高清视频一区二区| 国产精品女主播| 欧美色片在线观看| 精品人伦一区二区三区蜜桃网站| 一区二区三区四区欧美| 黄色在线免费看| 中文无字幕一区二区三区| 好吊色欧美一区二区三区四区| 成人全视频在线观看在线播放高清 | 欧美哺乳videos| 黄色三级电影网| 九九久久精品视频| 成人午夜两性视频| 免费日韩成人| 2019av中文字幕| 国产传媒在线观看| 一区二区久久久久久| 91免费网站视频| 国产女主播在线一区二区| 亚洲精品国产精品久久| 国产亚洲精品福利| 午夜精品一区二区三区四区| 91小视频免费观看| 欧美精品一区二区视频| 久久久久综合网| 国产精品夜夜夜爽张柏芝| 国产精品久久久久久久久久免费看 | 国产精品网曝门| 91社区在线| 最近2019中文字幕一页二页| 久久99精品久久久久久野外| zzjj国产精品一区二区| 国产美女福利在线观看| 欧美性猛交xxxxx免费看| 欧美一级黄色影院| 麻豆成人91精品二区三区| 99在线观看视频网站| 欧美成人精品一级| 亚洲精品资源在线| 黄色成人影院| 久久99久久99精品中文字幕 | 亚洲一区二区三区四区在线观看 | 亚洲激情久久| 欧洲亚洲在线视频| 精品国模一区二区三区欧美| 国产一区二区自拍| 亚洲精品一区二区在线看| 国产v综合ⅴ日韩v欧美大片| 色悠久久久久综合先锋影音下载| 99久久综合狠狠综合久久止| 国产欧美精品一区| 色偷偷色偷偷色偷偷在线视频| 欧美日本一道本| 小明精品国产一区二区三区| 中文字幕制服丝袜一区二区三区| 黄色精品免费看| 国产精品av网站| 懂色av一区二区在线播放| 亚洲欧美日韩在线综合| 亚洲国产一区二区视频| 亚洲男人在线| 午夜视频久久久| 欧美日韩国产乱码电影| 欧美hd在线| av一区二区三区免费| 国产欧美在线观看一区| 黑人极品ⅴideos精品欧美棵| 91九色在线免费视频| 国产综合激情| 成人高清在线观看| 亚洲免费视频中文字幕| 在线播放的av| 在线观看欧美日本| 日本不卡电影| 91免费在线观看网站| 亚洲色图欧美激情| 丁香五月缴情综合网| 热久久99这里有精品| 国产亚洲欧美色| 亚洲18在线| 国产又爽又黄的激情精品视频| 久久神马影院| 日本在线аv| 国产精品久久久久久久久久久新郎| 国产亚洲视频系列| 精品视频在线播放一区二区三区| 国产精品秘入口18禁麻豆免会员 | 亚洲精品一区国产精品| 日韩限制级电影在线观看| 欧美xnxx| 久久在线中文字幕| 亚洲视频一二区| 色吊丝一区二区| 波多野结衣精品久久| 色综合天天在线| 黄色日韩在线| 一色桃子av在线| 日韩经典中文字幕| 精品一区二区影视| 国产成人a视频高清在线观看| 波多野结衣家庭教师在线| 欧美日本中文字幕| 亚洲三级小视频| 亚洲国产老妈| sm国产在线调教视频| 日韩在线播放视频| 成人99免费视频| 天堂在线视频| 日韩av一区二区在线| 国产激情精品久久久第一区二区| gay视频丨vk| 亚洲成人黄色网| 中国av一区| 91精彩在线视频| 人人妻人人澡人人爽精品欧美一区| 亚洲一二三在线| 国产精品看片你懂得| 久久香蕉一区| 日韩av电影在线播放| 久久精品国产免费| 日韩午夜视频在线| 国产精品久久久久久精| 粉嫩av一区二区三区免费观看| 成人三级在线视频| 群体交乱之放荡娇妻一区二区| 日本在线观看一区| 亚洲免费大片在线观看| 亚洲在线久久| 乱馆动漫1~6集在线观看| 国产精品97在线| 51精品国产人成在线观看| 日韩国产欧美区| 日韩一区有码在线| 亚洲深爱激情| 韩国版免费三体| 99久久99久久| 一本色道久久综合狠狠躁篇怎么玩| 红桃视频国产精品| 中文av在线全新| 精品网站在线看| 精品国偷自产在线视频| 亚洲免费婷婷| 天堂av在线7| 成人小视频在线观看免费| 欧美天天综合色影久久精品| 美女精品网站| 高清中文字幕一区二区三区| 欧美精品videossex88| 精品夜夜嗨av一区二区三区| 黄色片在线播放| 欧美女人性生活视频| 国产伦精品一区二区三区视频免费| 日韩小视频网址| 在线综合+亚洲+欧美中文字幕|