Examination 板


LINE

※ 引述《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 │ └──────┴─────┴────┘ 應該是這樣...吧? --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.111.51.2 ※ 編輯: ARCHERDEVIL 來自: 175.111.51.2 (06/04 09:57)
1F:推 asdd:正確無誤!! 06/04 10:05
2F:推 kaitouGamer:這個時候就要回「嗯嗯,跟我想的一樣」 06/04 10:06
3F:→ ARCHERDEVIL:但實際上如果是sql server應該會多顯示群組名稱 06/04 10:46
4F:推 khlo926:非常感謝ARCHERDEVIL詳細解釋,原來我是錯在分群之後的觀念 06/04 22:20
5F:→ ARCHERDEVIL:其實我覺得你應該是SQL敘述語句執行順序弄錯 06/04 22:39
6F:→ ARCHERDEVIL:一般來說,SQL語句最先執行from 06/04 22:40
7F:→ ARCHERDEVIL:然後是where,再來應該是group by, 接著having 06/04 22:40
8F:→ ARCHERDEVIL:然後select,最後order 06/04 22:41
9F:→ ARCHERDEVIL:這就是為什麼我一開始要把整句敘述拆成數行的原因 06/04 22:42
10F:→ ARCHERDEVIL:對我來說這樣比較好判斷順序XD 06/04 22:42
11F:→ ARCHERDEVIL:建議你也可以試看看... 06/04 22:42
12F:→ khlo926:分成數行後的確比較清楚,謝謝您的教導 06/05 22:28
13F:→ ARCHERDEVIL:您言重了阿~討論一下而已: ) 06/05 22:53
14F:推 jjalu:受教推 07/26 20:19







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl 或 站內搜尋

TOP