发信人: pushme (整夜失眠mm), 信区: Statistics 标 题: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 02:01:23 2012, 美东) 我想要的结果很简单,就是对联系人表按Region分组,然后列出整张表的所有列( ContactName, Address, City, Region),给的query sample是用self-join,见下: SELECT DISTINCT c1.ContactName, c1.Address, c1.City, c1.Region FROM Customers AS c1, Customers AS c2 WHERE c1.Region = c2.Region AND c1.ContactName <> c2.ContactName ORDER BY c1.Region, c1.ContactName 但我直觉就不会想到用self-join, 一看分组就想用group by。是不是分组如果不涉及 aggregate,还是用self-join比较好? 想要的结果见附件,就是对region分组,然后显示其他各项。 -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 128.12.] 此主题相关图片如下:
发信人: givemeoffer (这不扯呢么), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 11:47:28 2012, 美东) not 100% sure what you want, but it seems 'select distinct * FROM Customers order by region,ContactName ' works -- 不要问我在哪工作 ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 72.9.]
发信人: alex943 (alex), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 12:11:02 2012, 美东) 难道这位失眠mm 就是为了这个整夜失眠 ? 我老觉得group by确实好用 很直接,但有个重要限制: 在select里面其他字段就不能 直接放进去了. 比如下句在oracle里面就会报错. select region, name from view1 group by region 但在sas里面没问题. 其他数据库没试过, teradata也不行. 这个时候就得用subquery绕出来. 嗨 其实大家都懂的. 【 在 pushme (整夜失眠mm) 的大作中提到: 】 : 我想要的结果很简单,就是对联系人表按Region分组,然后列出整张表的所有列( : ContactName, Address, City, Region),给的query sample是用self-join,见下: : SELECT DISTINCT c1.ContactName, c1.Address, c1.City, c1.Region : FROM Customers AS c1, Customers AS c2 : WHERE c1.Region = c2.Region : AND c1.ContactName <> c2.ContactName : ORDER BY c1.Region, c1.ContactName : 但我直觉就不会想到用self-join, 一看分组就想用group by。是不是分组如果不涉及 : aggregate,还是用self-join比较好? : 想要的结果见附件,就是对region分组,然后显示其他各项。 -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 70.179.]
发信人: pushme (整夜失眠mm), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 12:45:53 2012, 美东) 哇,原来这么简单,我是在网上看一个SQL tutorial,其中self-join是如我贴中的那个 query那样用的,按region分组,居然得self-join,所以我就搬上来问一问。 【 在 givemeoffer (这不扯呢么) 的大作中提到: 】 : not 100% sure what you want, but it seems 'select distinct * FROM Customers : order by region,ContactName ' works -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 128.12.]
发信人: longtian (有人的地方,就有江湖), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 14:09:41 2012, 美东) 把name也放到group by里边,就完了 【 在 alex943 (alex) 的大作中提到: 】 : 难道这位失眠mm 就是为了这个整夜失眠 ? : 我老觉得group by确实好用 很直接,但有个重要限制: 在select里面其他字段就不能 : 直接放进去了. 比如下句在oracle里面就会报错. : select region, name : from view1 : group by region : 但在sas里面没问题. 其他数据库没试过, teradata也不行. : 这个时候就得用subquery绕出来. : 嗨 其实大家都懂的. -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 204.138.]
发信人: pushme (魔法棒公主~), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 14:38:06 2012, 美东) 但我如果要select全部(全部列包括region, name, city, address),然后只group by region and name就不行 难道要select * from customers group by region, name, city, address? 【 在 longtian (有人的地方,就有江湖) 的大作中提到: 】 : 把name也放到group by里边,就完了 -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 128.12.]
发信人: givemeoffer (这不扯呢么), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 15:11:09 2012, 美东) 【 在 pushme (魔法棒公主~) 的大作中提到: 】 : 但我如果要select全部(全部列包括region, name, city, address),然后只group by : region and name就不行 : 难道要select * from customers : group by region, name, city, address? right. and it is the same as select distinct * -- 不要问我在哪工作 ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 72.9.]
发信人: powerpower (屁股), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 16:47:09 2012, 美东) 你用了group by了就是在region level上显示表了,那些人名、地址之类的怎么可能并 到一起呢,自然会报错了 可以 select count(name) as name, 或者用min()、max()这样的限制 -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 170.37.]
发信人: gin118 (Gin), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 16:56:21 2012, 美东) I think LZ's problem is a simple order problem . No need for group by. The purpose of using group by is not she thought of . -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 170.201.]
发信人: gin118 (Gin), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 17:01:19 2012, 美东) agree, I think when you need any calculation in sql by group, then group by will be used. 【 在 powerpower (屁股) 的大作中提到: 】 : 你用了group by了就是在region level上显示表了,那些人名、地址之类的怎么可能并 : 到一起呢,自然会报错了 : 可以 select count(name) as name, : 或者用min()、max()这样的限制 -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 170.201.]
发信人: pushme (魔法棒公主~), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 19:06:00 2012, 美东) 很对,我这个问题确实只是一个order by的问题 【 在 gin118 (Gin) 的大作中提到: 】 : I think LZ's problem is a simple order problem . : No need for group by. : The purpose of using group by is not she thought of . -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 128.12.]
发信人: powerpower (屁股), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 20:52:54 2012, 美东) 哦,你一说我再一看主贴。LZ自己表述不清楚 【 在 gin118 (Gin) 的大作中提到: 】 : agree, I think when you need any calculation in sql by group, then group by : will be used. -- ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 216.195.]
发信人: songkun (告别棒球场), 信区: Statistics 标 题: Re: SQL中啥时候用group by, 啥时候用self-join? 发信站: BBS 未名空间站 (Wed Feb 8 23:53:48 2012, 美东) 你这不叫按Region分组。 GROUP BY region的话, 结果里面每个不同的region只会有一行。 你这个同一个region在结果里面还有不同的行, 根本不是 GROUP BY要做的事情。 【 在 pushme (整夜失眠mm) 的大作中提到: 】 : 我想要的结果很简单,就是对联系人表按Region分组,然后列出整张表的所有列( : ContactName, Address, City, Region),给的query sample是用self-join,见下: : SELECT DISTINCT c1.ContactName, c1.Address, c1.City, c1.Region : FROM Customers AS c1, Customers AS c2 : WHERE c1.Region = c2.Region : AND c1.ContactName <> c2.ContactName : ORDER BY c1.Region, c1.ContactName : 但我直觉就不会想到用self-join, 一看分组就想用group by。是不是分组如果不涉及 : aggregate,还是用self-join比较好? : 想要的结果见附件,就是对region分组,然后显示其他各项。 -- 有人问一个法国四年级小朋友,3+4等于几?回答:不知道。 那4+3等于几?还是回答不知道。 那你小学都学了些什么呀?我知道3+4==4+3。 为什么呀?因为加法是一个Abel群。 ※ 来源:·WWW 未名空间站 海外: mitbbs.com 中国: mitbbs.cn·[FROM: 98.248.]
Site Map - Contact Us - Terms and Conditions - Privacy Policy 版权所有,未名空间(mitbbs.com),since 1996