102關務三等 資訊處理 資料庫應用SQL查詢 - 考試

Carolina Franco avatar
By Carolina Franco
at 2013-06-04T09:36

Table of Contents

※ 引述《khlo926 (深白色)》之銘言:
: 題目如下:
: 四、(二)Select Count(*) As SKU_Count, Sum(Price) As TotalRev, SKU From
: Order_Item Group By SKU Having Sum(Price)=50;
: Order_Item
: ┌──────┬─────┬────┬───┬───────┐
: │OrderNumber │ SKU │Quantity│Price │ExtendedPrice │
: ├──────┼─────┼────┼───┼───────┤
: │ 1000 │ 201000 │ 1 │ 300 │ 300 │
: ├──────┼─────┼────┼───┼───────┤
: │ 1000 │ 202000 │ 1 │ 130 │ 130 │
: ├──────┼─────┼────┼───┼───────┤
: │ 2000 │ 101100 │ 4 │ 50 │ 200 │
: ├──────┼─────┼────┼───┼───────┤
: │ 2000 │ 101200 │ 2 │ 50 │ 100 │
: └──────┴─────┴────┴───┴───────┘
: 想法:
: Group By SKU,應該會分成4群(筆),但後面的Having Sum(Price)就看不懂了
: 印象中Having語法是針對Group By後的結果再下條件
: 但Group By後的4筆,每一筆都有各自的單一Price,
: 所以不知道Sum(Price)是要跟誰加總(或是執行之後的結果是?)
修改1:

我看了一下,你也許卡在這裡

基本上群組指令group by 會做列資料群組
也就是說如果我指定SKU作為分群標的,那就是四群資料
如果我指定OrderNumber那就是兩群資料

每一群資料都可以視為「一個完整的暫時表格」
因為關聯資料庫運算結果也應該是關聯式資料庫

所以最後加總的部份就只有以各暫時資料表格作為範圍
用程式跑就是
int x=0;
for(int i=0; i<n; i++)
{ x= x + table[i]; }
return x; //應該是這樣寫沒錯吧?

假設n=1 //只有一列資料
那該迴圈就只會運行一次
然後傳回結果




: 還請版上高手幫忙,謝謝!
: ==========================================
: 謝謝ARCHERDEVIL的提點,我的答案如下圖,請問正確嗎?謝謝!
: ┌──────┬─────┬────┐
: │SKU_Count │ TotalRev │ SKU │
: ├──────┼─────┼────┤
: │ 2 │ 100 │ 101100 │
: ├──────┼─────┼────┤
: │ 2 │ 100 │ 101200 │
: └──────┴─────┴────┘
我想應該不正確XD

我把敘述重寫一次你可能會比較清楚

Select Count(*) As SKU_Count, Sum(Price) As TotalRev, SKU
From Order_Item
Group By SKU
Having Sum(Price)=50;

從這樣看

原始表格會先變成四個群組列資料
分別是SKU=201000, SKU=202000, SKU=101100, 以及SKU=101200

然後去找各群組中price總和等於50的群組資料
於是SKU=101100 與 SKU=101200 所在群組被選出來

最後執行select 敘述

首先各群組分別計算有多少列資料,也就是count(*)
依照你提供的原始表格,兩個群組的count(*)都是1

然後計算群組內列資料中price欄位總和
因為條件式having sum(price)=50
所以總和一定是50
<>50 的不符合條件, 傳回false 因此不顯示

最後再把SKU資料列出來

換句話說...

答案應該是


┌──────┬─────┬────┐
│SKU_Count │ TotalRev │ SKU │
├──────┼─────┼────┤
│ 1 │ 50 │ 101100 │
├──────┼─────┼────┤
│ 1 │ 50 │ 101200 │
└──────┴─────┴────┘

應該是這樣...吧?


--
Tags: 考試

All Comments

Iris avatar
By Iris
at 2013-06-06T20:18
正確無誤!!
Daniel avatar
By Daniel
at 2013-06-08T14:49
這個時候就要回「嗯嗯,跟我想的一樣」
Callum avatar
By Callum
at 2013-06-11T18:14
但實際上如果是sql server應該會多顯示群組名稱
Madame avatar
By Madame
at 2013-06-14T03:55
非常感謝ARCHERDEVIL詳細解釋,原來我是錯在分群之後的觀念
Irma avatar
By Irma
at 2013-06-16T15:21
其實我覺得你應該是SQL敘述語句執行順序弄錯
Emily avatar
By Emily
at 2013-06-16T21:38
一般來說,SQL語句最先執行from
然後是where,再來應該是group by, 接著having
William avatar
By William
at 2013-06-17T05:25
然後select,最後order
Ursula avatar
By Ursula
at 2013-06-22T03:10
這就是為什麼我一開始要把整句敘述拆成數行的原因
對我來說這樣比較好判斷順序XD
建議你也可以試看看...
Zanna avatar
By Zanna
at 2013-06-26T12:42
分成數行後的確比較清楚,謝謝您的教導
Frederic avatar
By Frederic
at 2013-06-28T10:06
您言重了阿~討論一下而已: )
Dorothy avatar
By Dorothy
at 2013-07-03T07:11
受教推

外交調查國安民航可以報名了~

Robert avatar
By Robert
at 2013-06-04T07:16
今天起開始報名 加油! http://tinyurl.com/yd2ksmm - ...

為什麼N型跟P型半導體濃度平方是定值?

Quintina avatar
By Quintina
at 2013-06-04T07:04
※ 引述《kuanfu (黑暗騎士)》之銘言: : 書上提到本質半導體自由電子跟電洞濃度相等 也就是n=p=ni : 所以np=ni^2 但是N型是自由電子濃度比電洞高很多 : P型是電洞濃度比自由電子高很多 書上說N型自由電子濃度比電洞高多少 : 電洞濃度就相對減少多少 同樣的在P型電洞濃度高自由電子多少 ...

高雄讀書會

Hedda avatar
By Hedda
at 2013-06-04T04:11
http://www.ibon.com.tw/0300/checkupload.aspx 取件號碼6642706380 Exp.....6/11/2013 以上是讀書會進度與大致內容, 初期有點累,特別是沒有基礎的朋友, 因為看課本找答案是很累的事情, 特別是有機和生物並非像單字一樣好查, 而是一個觀念的 ...

為什麼N型跟P型半導體濃度平方是定值?

Frederic avatar
By Frederic
at 2013-06-04T02:54
書上提到本質半導體自由電子跟電洞濃度相等 也就是n=p=ni 所以np=ni^2 但是N型是自由電子濃度比電洞高很多 P型是電洞濃度比自由電子高很多 書上說N型自由電子濃度比電洞高多少 電洞濃度就相對減少多少 同樣的在P型電洞濃度高自由電子多少 電洞濃度就減少多少 最後自由電子濃度跟電洞濃度的乘積還是 ...

親屬

Harry avatar
By Harry
at 2013-06-04T00:37
各位好 A男B女是夫妻,生有一子C,後來AB離婚 D男E女是夫妻,生有一子F,後來DE離婚 而離婚的A和E結婚了 想請問C,F之間的關係是? 乍看之下好像是兄弟 因為AE是她們的父母 但C,F之間的關係是 血親-配偶-血親 卻是連姻親都不是 請問C,F之間的關係是前者?還是後者? 或是其他 謝謝 ...