楼主: redaring
5155 5

请教,用select 求最大值/最小值等出现的问题??? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
48 个
通用积分
0.0600
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
4910 点
帖子
102
精华
0
在线时间
123 小时
注册时间
2009-11-22
最后登录
2018-2-15

楼主
redaring 发表于 2010-1-6 02:23:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我的数据格式是这样的:

v1    v2    v3    v4
A     李   65    55   
A    张    71    33
A    刘    96    49
B    李    89    66
B    秦    61    88
B    伍    99    75

我写了这样的语句,目的是求出v1相同时,v3 的最大值/最小值/平均值,并且输出的时候将含有极值的数据整行输出:

proc sql output data=t;
select v1,v2,v3,v4, max(v3) as max, min(v3) as min, mean(v3) as mean
from work.A
group by v1;
run;

我想要得到的结果是这样的:
v1    v2    v3    v4    mean
A     李   65    55                               /* 就是v1=A时,v3最小值的这整行*/
A    刘    96    49
B    秦    61    88                               /* 就是v1=B时,v3最小值的整行*/
B    伍    99    75

可是,出来的结果不是这样的,乱七八糟,我写的肯定有问题,希望大侠们可以帮我改改,怎么可以达到我想要的效果呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Select Elect 最大值 ele ect 请教 Select 最大值

回帖推荐

sushe1527 发表于6楼  查看完整内容

data x; input v1$ v2$ v3 v4 ; cards; A 李 65 55 A 张 71 33 A 刘 96 49 B 李 89 66 B 秦 61 88 B 伍 99 75 ;run; proc sql ;create table t as select *, mean(v3) as mean from x group by v1 having v3=min(v3) or v3=max(v3) order v1,v3;run;

本帖被以下文库推荐

沙发
redaring 发表于 2010-1-6 02:24:00
非常谢谢啦!!!!!!!!

藤椅
redaring 发表于 2010-1-6 09:19:34
或者改成这样行不行?不过运行的时候还是错,哪位大侠指点一下菜鸟,谢谢了!

proc sql output data=t;
select v1,v2,v3,v4
from work.A
where v3=max(v3) or v3=min(v3)
group by v1;
run;

板凳
silencelove 发表于 2010-1-6 09:30:27
SELECT *
FROM a, [SELECT v1,Max(a.v3) AS MaxV3,avg(a.v3) as AVGV3
FROM a
GROUP BY a.v1]. AS b
WHERE a.v1= b.v1 and a.v3=b.maxv3 union
SELECT *
FROM a, [SELECT v1,Min(a.v3) AS MinV3,avg(a.v3) as AVGV3
FROM a
GROUP BY a.v1]. AS c
WHERE a.v1= c.v1 and a.v3=c.minv3

报纸
redaring 发表于 2010-1-6 09:52:48
谢谢楼上的,不过我按着您的方法改了一下,还是不行

地板
sushe1527 发表于 2010-1-6 11:51:01
data x;
input v1$    v2$    v3    v4 ;
cards;
A     李   65    55   
A    张    71    33
A    刘    96    49
B    李    89    66
B    秦    61    88
B    伍    99    75
;run;

proc sql ;create table t as
select  *, mean(v3) as mean
from x group by v1 having  
v3=min(v3) or v3=max(v3) order v1,v3;run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 01:06