免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: jiaqin
打印 上一主题 下一主题

sql问题,分组查询功能的实现? [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-05-12 06:20:00
11 [报告]
发表于 2004-05-03 10:26 |只看该作者

sql问题,分组查询功能的实现?

很简单的sql 呀

论坛徽章:
0
12 [报告]
发表于 2004-05-03 16:30 |只看该作者

sql问题,分组查询功能的实现?

select * from your_table_name where e in (select max(e) from your_table_name group by a);

--原理:先查找出e的集合,然后根据这个集合进行查找。

论坛徽章:
0
13 [报告]
发表于 2004-05-03 22:05 |只看该作者

sql问题,分组查询功能的实现?

to :新手上路samson      简单你写一个给我观察观察吧,最好是能在access中能运行的,其它的大哥都给了点意见,您也不妨来一句能够
简洁明了给出我想要的答案啊。
to: richard  您没有仔细看我的贴子,您的答案前面也有人给出的,但是
和我的要求好象有些差别,执行起来也有些问题,前面的贴子我也进行了
说明,请再给点其它的意见吧。
废话太多,很简单的一个问题,倒让我说了这么多!!!

论坛徽章:
0
14 [报告]
发表于 2004-05-04 13:15 |只看该作者

sql问题,分组查询功能的实现?

原帖由 "jiaqin" 发表:

如上,要查询出这样的记录:a字段分组且e字段最大的那一组记录
select * from 表名 group by a having max(e)这样当然是错误的!
关键是怎么对分组后的记录如何判断条件。应该sql可以实现只是俺们这
疙瘩脑袋不?.........


a字段分组且e字段最大的那一组记录
按照你的意思,应该可以分解为如下几步:
1。按照a字段分组(假设有3组)
2。在每一组中找到e值最大的记录(应该是有3条记录)
3。输出符合上述条件的记录

不知对否?

我给你的语句就是完成上述功能的。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-05-28 06:20:00
15 [报告]
发表于 2004-05-04 16:05 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
16 [报告]
发表于 2004-05-07 17:29 |只看该作者

sql问题,分组查询功能的实现?

oldunix:   select * from your_table_name where e in (select max(e) from your_table_name group by a);
语句有毛病!!!!! 确实是,执行一下就能发现。
再请教oldunix,用您的语句在oracle试验可行,进一步问一下,如果我只想要a=2这条记录呢,试过两种写法都不行:
1。select * from test_table  where (b,c) in  ( select b,max(c) from test_table group by b) and a=2;
2。select * from test_table  where (b,c) in  ( select b,max(c) from test_table group by b where a=2) 不知毛病在哪里?
还要感谢richard,您还是费了些思量啊。
各位有些受不了这些您的称谓吧,呵呵。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-05-28 06:20:00
17 [报告]
发表于 2004-05-07 19:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
18 [报告]
发表于 2004-05-08 12:59 |只看该作者

sql问题,分组查询功能的实现?

哎,原来的写法竟然是正确的,只是没注意到其中的一个细节,多加了一对括号1。select * from test_table where (b,c) in ( select (b,max(c)) from test_table group by b) and a=2;今早又试了oldunix大哥的方法均可行,在这里有一个疑惑, 还是sql语句清淡的缘故,下列语句都是在实际环境中运行的结果:
SQL>; select * from offeringloan where financecode=37711020113;
FLOWNO          FINANCECODE  BORROWERCODE       CU   LOANSUM
13170110001460  37711020113  15330980-X         01     120000
13170110001464  37711020113  74489235-5         01    3000000
13170110001424  37711020113  72853567-3         01     100000
13170110001423  37711020113  72853567-3         01     130000
13170110001465  37711020113  74489235-5         01    1000000

SQL>; select * from offeringloan  where financecode=37711020113 and ((borrowercode,loansum) in (select borrowercode,max(loansum) from offeringloan group by borrowercode));
FLOWNO          FINANCECODE  BORROWERCODE       CU    OANSUM
  13170110001423  37711020113  72853567-3         01     130000
为啥只能选出一条呢? 应该有三条记录啊,我又不知道我那里的脑筋出了问题。
还是继续赐教中吧。

论坛徽章:
0
19 [报告]
发表于 2004-05-10 08:16 |只看该作者

sql问题,分组查询功能的实现?

被晒了一天,自已up吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP