楼主: fyp198744
29067 9

[问答] sql的count能加条件吗? [推广有奖]

  • 0关注
  • 1粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
135 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
5181 点
帖子
257
精华
0
在线时间
258 小时
注册时间
2016-5-23
最后登录
2019-9-30

楼主
fyp198744 发表于 2016-11-9 14:25:39 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据是这样的tt=
grouabc
arm1ynn
arm1yyn
arm2nnn
arm2nyn
我编的代码是
pro sql;
    create table mm as select count(a="y") as a1, count(b="y") as b1, count(c="y") as c1 group by grou;
quit;
希望出现的效果是
a1b1c1
arm1

2

1

0

arm2

0

1

0

但是没有效果,sas并没有区分“y”和“n”;而是一起统计进去了!


二维码

扫码加我 拉你入群

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

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

关键词:Count sql Select Create Elect count

沙发
baiyaoqian 发表于 2016-11-9 14:47:56
count 好像不行,因为逻辑值为 0或1,count以后是总数
可以改为sum()函数,这样只累计那些条件成立的记录

藤椅
fyp198744 发表于 2016-11-9 15:13:22
baiyaoqian 发表于 2016-11-9 14:47
count 好像不行,因为逻辑值为 0或1,count以后是总数
可以改为sum()函数,这样只累计那些条件成立的记录
sum不行,sum要求是数值变量,字符型的不行!

板凳
wwang111 发表于 2016-11-9 15:41:07
sum应该可以:

proc sql;
create table wanted as
select grou, sum(a='y') as a1, sum(b='y') as b1, sum(c='y') as c1
from tt
group by grou;
quit;

用data步也比较方便:

proc sort data=tt;
by grou;
run;

data wanted;
set tt;
by grou;
if first.grou then do;
   a1=0;b1=0;c1=0;
end;
if a='y' then a1+1;
if b='y' then b1+1;
if c='y' then c1+1;
if last.grou;
keep grou a1 b1 c1;
run;

报纸
fyp198744 发表于 2016-11-9 17:18:33
baiyaoqian 发表于 2016-11-9 14:47
count 好像不行,因为逻辑值为 0或1,count以后是总数
可以改为sum()函数,这样只累计那些条件成立的记录
sum可以,刚才我错了

地板
fyp198744 发表于 2016-11-9 17:19:14
wwang111 发表于 2016-11-9 15:41
sum应该可以:

proc sql;
恩,不过最近对sql着魔了!

7
choasxiao 发表于 2016-11-9 22:15:31
用case when

8
fyp198744 发表于 2016-11-10 09:36:22
choasxiao 发表于 2016-11-9 22:15
用case when
能具体讲讲吗?

9
guozhao1986 发表于 2016-11-10 12:21:36
用sum 和case when的结合就能条件count了,具体如下,我先写的,眼前没有sas试,好不好用跟我说下啊。

proc sql;
create table mm as
        select grou,
               sum(case a when 'y' then 1 else 0) as a1,
               sum(case b when 'y' then 1 else 0) as b1,
               sum(case b when 'y' then 1 else 0) as c1
        from tt
        group by grou;
quit;

10
fyp198744 发表于 2016-11-10 13:47:21
guozhao1986 发表于 2016-11-10 12:21
用sum 和case when的结合就能条件count了,具体如下,我先写的,眼前没有sas试,好不好用跟我说下啊。

p ...
大体没问题,就是少了几个end

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

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