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灯, 水草

请输入看板名称,例如:iOS 或 站内搜寻

TOP