SAS中文论坛

标题: PROC sql 先分组,再取每组中前两条最小的纪录 , 但标示字段不能有重复. [打印本页]

作者: shiyiming    时间: 2011-3-5 07:43
标题: 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又再次出现了;(

请高手帮忙,多谢
作者: Qiong    时间: 2011-3-22 11:24
标题: Re: PROC sql 先分组,再取每组中前两条最小的纪录 , 但标示字段不能有重复.
好复杂的logic。。。
能不能先dedup by  b,a , 再by a 取前2条




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2