gpt4 book ai didi

sql - 在 SAS/SQL 中按条件删除两个变量组

转载 作者:行者123 更新时间:2023-12-05 08:30:52 26 4
gpt4 key购买 nike

我正在寻找以下问题的解决方案。我正在使用 SAS,因此欢迎使用基本的 SQL 或 Datastep 方法。也许解决方案很简单,但我是 SAS 的新手,找不到解决方案。

我有一个数据集,想按条件删除第二级的子组。所以为了让它更容易,让我解释一个例子。条件是:当 ColC 中任意一个值为 1 时,则去掉主群中的子群。主组为ColA,亚组为ColB

ColA | ColB | ColC
1 | a | 0
1 | a | 1
1 | b | 0
1 | b | 0
2 | a | 0
2 | a | 0
2 | b | 0
2 | b | 0
3 | a | 0
3 | a | 0
3 | b | 1
3 | b | 0

预期输出:

ColA | ColB | ColC
1 | b | 0
1 | b | 0
2 | a | 0
2 | a | 0
2 | b | 0
2 | b | 0
3 | a | 0
3 | a | 0

我尝试过以下方法:

select * from data
group by ColA, ColB having ColC <> 1

我认为,将按两列分组并选择没有 ColC=1 的所有组。但它仅“删除”ColC=1 的行。

另一种方法是这样的:

select * from data
where ColA in (select ColA from data where ColC <> 1)

当然,我不能用这个联系到子组。我也在考虑加入,但不确定该怎么做。

最佳答案

SQL 中的having 子句允许您通过汇总函数过滤查询。下面的查询表示仅包括按 ColAColB 分组后 ColC 的总和为 0 的输出。

proc sql noprint;
create table want as
select *
from have
group by ColA, ColB
having sum(ColC) = 0
;
quit;

关于sql - 在 SAS/SQL 中按条件删除两个变量组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62252029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com