iT邦幫忙

2022 iThome 鐵人賽

DAY 22
0
自我挑戰組

資料庫二年級:練習AdventureWorks範例資料庫系列 第 22

[第二十二天]IIF(如果可以~)

  • 分享至 

  • xImage
  •  

昨天有說今天要來一起研究IIF。

工作上我常用來"區分資料",
像是:通過vs不通過、比較大vs比較小等等。

先備(仙貝)

在訂單細節[Purchasing].[PurchaseOrderDetail]這張表,
我們可以看到金額的欄位:
https://ithelp.ithome.com.tw/upload/images/20221002/20152049phrFPizSjd.jpg

而金額最高與最低的查詢語法及結果:

  SELECT  MAX(UnitPrice) 金額最高
         ,MIN(UnitPrice) 金額最低
  FROM [Purchasing].[PurchaseOrderDetail]

https://ithelp.ithome.com.tw/upload/images/20221002/20152049toGQyUsivY.jpg
來double check一下,
確認沒有價格高於我們查到的最高金額:

SELECT  *
FROM [Purchasing].[PurchaseOrderDetail]
where UnitPrice>82.8345

https://ithelp.ithome.com.tw/upload/images/20221002/20152049Mwg170iTux.jpg

IIF

再來我要整理一份資料,
是確認某個消費級距下有多少筆消費資料,
(例:有幾筆消費是一元一下的,幾筆是一元到十元的)
就要用到我們的主角IIF啦~

--IIF公式
IIF(條件是什麼,為真...,為非則...)
--像是
IIF(UnitPrice大於一元,算一次,算零次)
--再使用SUM總計
SUM(IIF(UnitPrice<=1,1,0))一元以下

複製貼上幾次,
再更改想要的級距範圍,
就變成了:

SELECT  SUM(IIF(UnitPrice<=1,1,0))一元以下
,SUM(IIF(UnitPrice>1 AND UnitPrice<=10,1,0))十元以下
,SUM(IIF(UnitPrice>10 AND UnitPrice<=20,1,0))二十元以下
,SUM(IIF(UnitPrice>20 AND UnitPrice<=30,1,0))三十元以下
,SUM(IIF(UnitPrice>30 AND UnitPrice<=50,1,0))五十元以下
,SUM(IIF(UnitPrice>50 AND UnitPrice<=100,1,0))一百元以下
,SUM(IIF(UnitPrice>100 AND UnitPrice<=200,1,0))兩百元以下
FROM [Purchasing].[PurchaseOrderDetail]

https://ithelp.ithome.com.tw/upload/images/20221002/201520496pJVqN5ezD.jpg
是不是有點太簡單了呢?
明天我們再來點困難的吧~


上一篇
[第二十一天]語法修飾:2種方法,輕鬆補上同樣文字
下一篇
[第二十三天]製作加密資料
系列文
資料庫二年級:練習AdventureWorks範例資料庫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言