楼主: benny10
1500 1

[原创博文] 再问计算总合方法! [推广有奖]

  • 0关注
  • 0粉丝

硕士生

4%

还不是VIP/贵宾

-

威望
0
论坛币
114 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
2230 点
帖子
99
精华
0
在线时间
67 小时
注册时间
2007-6-23
最后登录
2020-3-25

楼主
benny10 发表于 2010-9-30 01:10:59 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
不好意思,又来请教各位前辈,之前我有问过计算总合的问题,也得到了解答,但我将它代入我的例子中却出现了问题,结果和我想得到的答案不符(想得到count1,但却得到count),再次请教各位前辈,我的代码是哪边出错了吗?
其问题说明为: 要将有相同日期、ID和行动的值全部加总起来,所以说在相同odateidbs的观测值其count皆相同(皆为其个别eq相加总),但若没有同odateidbs的观测值的话(话句话说,当天只有本身一笔时),就不作相加的动作,故为missing(当然一开始是没有count1 count 这一项的,因为这是我最后想求得的结果) ,再次请求各位前辈的帮助!


资料如下:
sn odate eq ep etime bs id count1 count
1101 20090518 2000 33.2 93320 B 1  55000
1101 20090518 2000 33.25 91910 S 1 4000 61000
1101 20090518 2000 33.2 93705 S 1 4000 61000
1101 20090518 1000 33.25 120434 S 2  1000
1101 20090522    B 1  110000
1101 20090522 5000 33.2 122911 B 1 25000 110000
1101 20090522 2000 33.25 123001 B 1 25000 110000
1101 20090522 3000 33.2 123051 B 1 25000 110000
1101 20090522 5000 32.8 91643 B 1 25000 110000
1101 20090522 5000 32.85 92553 B 1 25000 110000
1101 20090522 5000 32.8 93553 B 1 25000 110000
1101 20090522 15000 33.4 121002 S 1 20000 115000
1101 20090522 5000 33.2 131346 S 1 20000 115000
1102 20090518 2000 37.3 111959 S 1  61000
1102 20090518 5000 36.5 90230 S 6  20000
1103 20090526 3000 18.35 101321 B 9  9000
1103 20090526 3000 18.8 120346 S 9  3000
1103 20091002    B 13  20000
1103 20091002 20000 16.85 131048 B 13  20000

代码如下:
proc
sql;

create
table out2 as

select
a.*, b.count

from book5 a left join

(
select odate,bir,bs,count(bir) as count, sum(eq) as count

from book5

group
by odate, bir, bs


having count gt
1
) b


on a.odate=b.odate and a.bir=b.bir and a.bs=b.bs

order
by odate, etime,sn;
quit;
二维码

扫码加我 拉你入群

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

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

关键词:left join missing Select 请教各位前辈 Create count

沙发
soporaeternus 发表于 2010-9-30 09:16:24
楼主帖的代码貌似有问题啊,错误多多啊
稍微改了下,添加字段sum,貌似和count1一致了
  1. proc
  2. sql;

  3. create
  4. table out2 as

  5. select
  6. a.*, b.sum

  7. from book5 a left join

  8. (select odate,sn,bs,id,count(sn) as count, sum(eq) as sum

  9. from book5

  10. group by odate, sn, bs,id


  11. having count gt 1
  12. ) b

  13. on a.odate=b.odate and a.sn=b.sn and a.bs=b.bs and a.id=b.id

  14. order
  15. by a.sn,a.odate, a.etime;
  16. quit;
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
peijiamei + 4 + 2 精彩帖子

总评分: 学术水平 + 4  热心指数 + 2   查看全部评分

Let them be hard, but never unjust

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 14:39