《電子技術應用》
欢迎订阅(电子2025)
欢迎订阅(网数2025)
您所在的位置:首頁 > 通信與網絡 > 業界動態 > SQL用了兩年多,分享2個最常用的小技巧

SQL用了兩年多,分享2個最常用的小技巧

2021-07-10
來源:CSDN
關鍵詞: SQL 小技巧

導讀:SQL是所有數據從業者必須打牢的基本功之一,扎實的SQL查詢和適當的調優技巧是檢驗SQL能力的兩大重要準則。個人曾經專門花費過好多時間用于提升SQL能力,期間也刷了大量的SQL題目,在這期間也不斷摸索總結了一些小技巧,今天本文就來分享其中的兩個,也差不多是日常使用中最為高頻的兩個了。

為了配合演示這兩個小技巧,本文所使用示例數據如下,其實這也是前幾天推文中所使用的數據:

微信圖片_20210710225409.png

  SQL的數據類型隱式轉換

  很多編程語言都限定了數據類型,例如在Python中字符串“0”和數值0是不相等的,布爾型True和數值1也是不相等,但在SQL中則不然,其內置了數據類型隱式轉換功能,所以執行查詢 select “0”=0 會返回1的,這既說明字符串“0”和數值0是相等的,也說明SQL中的布爾值會自動轉換為1或0。

微信圖片_20210710225412.png

  利用這一小技巧,在實現很多統計指標時就可以有很多小技巧。例如計算學生成績表中每名學生的成績的優秀率,即成績在90分以上的科目與本人總科目的占比。為實現這一查詢,常規的操作是分別統計每名學生成績在90分以上的科目數量和總科目,然后進行相除得到占比。

  實際上,在給出前述小例子的基礎上,這一需求可以如下實現:

微信圖片_20210710225414.png

其中,在每名學生的分組中,條件判斷score>=90返回一組0或1的結果,對這組0/1取值進行求均值操作,即等價于求成績>=90的科目占比。

  巧妙運用if函數和null

  SQL內置了眾多函數,但對于一名程序員而言if函數應該尤為常見和常用;另一方面,null值也是SQL中一個神奇的存在,它有兩大特性:一是任何值與null的任何計算都會得到null值;二是在任何聚合函數中,null值都不參與計算(例如,count計數就是查找null以外的結果數量)。配合使用if函數和null值,有時也可實現很好的效果。

  例如,仍然針對以上學生成績表,需要分別統計每名學生成績在80分以上成績的平均值,也就是如果成績>=80則參與最后均值計算,否則不參與。配合if函數和null的特性,可以如下優雅的實現:

微信圖片_20210710225417.png

  實際上,上述查詢語句中,首先通過if函數衍生一個臨時字段if(score>=80, score, null)其取值為:成績≥80時取成績值,否則置為null,即相當于僅保留了成績在80分以上的記錄;而后嵌套一層avg函數即直接實現了計算80分以上平均值的效果。

  當然,對于這一需求也可以先用where條件過濾出成績在80分以上的記錄后再聚合統計。




電子技術圖片.png

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 欧美精品一区二区久久 | 全黄大全大色全免费大片 | 亚洲欧美日韩高清一区二区一 | 中文字幕看片在线a免费 | 午夜私人影院免费体验区 | 偷偷操不一样的久久 | 国产日韩欧美在线观看不卡 | 日韩久久影院 | 亚洲黄色激情视频 | 最近最新免费中文字幕一 | 国产区综合另类亚洲欧美 | 午夜影院三级 | 羞羞视频网站免费 | 精品福利影院 | 日本三级香港三级网站 | 精品国产一区二区三区成人 | 男女在线视频观看 | 一区二区精品视频 | 在线视频国产区11p 在线视频观看一区 | 久久久网站亚洲第一 | 青春草视频在线免费观看 | 456极品嫩模在线视频 | 精品一区二区在线欧美日韩 | 一级毛片无毒不卡直接观看 | 国产专区在线播放 | 五月天婷婷在线播放 | 亚洲最大看欧美片网站 | 国产精品久久久久久久午夜片 | 日韩视频免费在线播放 | 精品国产欧美一区二区 | 国产亚洲欧美成人久久片 | 国产麻豆a一级毛片爽爽影院 | 天天尻| 日韩高清在线二区 | 久久久久成人精品免费播放动漫 | 欧美一级高清免费a | 欧美变态口味重另类牲 | 欧美日韩在线一区二区三区 | 国产一区玩具在线观看 | 久久精品影视 | 无毛片|