SAS SQLでサマリー値を生成するこの演習では、1日中曲がりました。そのSASの部分は基本的にはちょうど私がいくつかのデータを模索しており、答えに亀裂がある場合は一般的なSQLの原則が適用されます。このSQLサマリー機能に苦しんでいます
は下記考えてみましょう:
入力データ...
data test;
account_rk = 111111;
customer_rk = 111111;
ca_flag = 0;
score1 = 100;
score_with_ca = 0;
score_without_ca = 100;
output;
account_rk = 111111;
customer_rk = 222222;
ca_flag = 1;
score1 = 150;
score_with_ca = 150;
score_without_ca = 0;
output;
run;
が要約機能を実行しようとしました...
proc sql;
create table test2 as
select
account_rk,
sum(ca_flag) as sum_ca_flag,
min(case
when score_with_ca ne 0 then score_with_ca
else score1 end) as min_score_with_ca,
min(case
when score_without_ca eq 0 then score_without_ca
else score1 end) as min_score_without_ca
from test
group by account_rk
having sum_ca_flag > 0;
quit;
何outout希望する
data test3;
account_rk = 111111;
sum_ca_flag = 1;
min_score_with_ca = 150;
min_score_without_ca = 100;
output;
run;
...のようになります。
第3ステップで生成された出力のように出力するには、SQLで何を変更する必要がありますか?ここでの論理的なステップの考え方は、ca_flag
の値に応じてscore1
の最小値を生成し、それをaccount_rk
でグループ化することです。
誰でも私が間違っていることを教えてもらえますか?私はあなただけNULL
あるいは全くelse
句と、右ロジックたいと思います
おかげ
あなたはca_flagをahveときscore_with_Caまたはscore_without_Caをチェックするために奇妙に思えるが。しかし、私はそれが問題だとは思わない。 – xQbert