SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 581|回复: 1
打印 上一主题 下一主题

PROC sql 先分组,再取每组中前两条最小的纪录 , 但标示字段不能有重复.

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2011-3-5 07:43:33 | 只看该作者

PROC sql 先分组,再取每组中前两条最小的纪录 , 但标示字段不能有重复.

先分组,再取每组中前两条最小的纪录

表结构如下:
a        b        c
s1        d3        0
s1        d1        2
s1        d2        3

s2        d3        0
s2        d1        1
s2        d4        2

s3        d3        1
s3        d1        1
s3        d2        2
s3        d4        0.5

先按照字段a分组,再取每组中c字段的前两条最小的纪录,也就是说,
对s1组,我取0,2行纪录。对s2组,应该取0,1行纪录,但是因为字段b的d3已经在s1组中出现过,
我只能取d1,d4作为我的前两条纪录。
依次类推, ....

用了下面的SQL ,
Select *
From test A
Where (Select Count(*)
       From test
       Where a = A.a And c< A.c) < 2
Order By a, c

显示结果如下:

a        b        c
s1        d3        0
s1        d1        2
s2        d3        0
s2        d1        1
s3        d4        0.5
s3        d1        1
s3        d3        1

但是为什么s3组会出现3条纪录, 而且在我的s2组中字段b的纪录集d3又再次出现了;(

请高手帮忙,多谢
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
沙发
发表于 2011-3-22 11:24:40 | 只看该作者

Re: PROC sql 先分组,再取每组中前两条最小的纪录 , 但标示字段不能有重复.

好复杂的logic。。。
能不能先dedup by  b,a , 再by a 取前2条
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-11 11:43 , Processed in 0.161143 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表