102關務三等 資訊處理 資料庫應用SQL查詢 - 考試
By Carolina Franco
at 2013-06-04T09:36
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 │
└──────┴─────┴────┘
應該是這樣...吧?
--
: 題目如下:
: 四、(二)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
By Iris
at 2013-06-06T20:18
at 2013-06-06T20:18
By Daniel
at 2013-06-08T14:49
at 2013-06-08T14:49
By Callum
at 2013-06-11T18:14
at 2013-06-11T18:14
By Madame
at 2013-06-14T03:55
at 2013-06-14T03:55
By Irma
at 2013-06-16T15:21
at 2013-06-16T15:21
By Emily
at 2013-06-16T21:38
at 2013-06-16T21:38
By William
at 2013-06-17T05:25
at 2013-06-17T05:25
By Ursula
at 2013-06-22T03:10
at 2013-06-22T03:10
By Zanna
at 2013-06-26T12:42
at 2013-06-26T12:42
By Frederic
at 2013-06-28T10:06
at 2013-06-28T10:06
By Dorothy
at 2013-07-03T07:11
at 2013-07-03T07:11
Related Posts
外交調查國安民航可以報名了~
By Robert
at 2013-06-04T07:16
at 2013-06-04T07:16
為什麼N型跟P型半導體濃度平方是定值?
By Quintina
at 2013-06-04T07:04
at 2013-06-04T07:04
高雄讀書會
By Hedda
at 2013-06-04T04:11
at 2013-06-04T04:11
為什麼N型跟P型半導體濃度平方是定值?
By Frederic
at 2013-06-04T02:54
at 2013-06-04T02:54
親屬
By Harry
at 2013-06-04T00:37
at 2013-06-04T00:37