顧客のユーザー名、年と半年、最初の半年の賭けの数、2 番目の半年の賭けの数、および利益計算を返す次のクエリがあります。
proc sql;
create table avg
as
select
username as username,
year(datepart(betdate))*10 + floor( (qtr(datepart(betdate))+1)/2) as yearsemiyear,
count(bet_id) as betcount,
sum( case when floor( (qtr(datepart(betdate))+1)/2) = 1 then 1 else 0 end ) as firstHalfBetcount,
sum( case when floor( (qtr(datepart(betdate))+1)/2) = 2 then 1 else 0 end ) as secondHalfBetcount,
round(mean((winnings - stake) / stake) * 100, 0.01) as averageMargin
from &dsn
WHERE datepart(BETDATE) > '31DEC2010'd AND datepart(BETDATE) <'01JAN2012'd
AND bet_type = 'SGL'
group by 1,2
/* HAVING sum( case when floor( (qtr(datepart(betdate))+1)/2) = 1 then 1 else 0 end ) >= 4 */
order by username desc, yearsemiyear asc;
終了する;
これをサンプルの前半で少なくとも 4 回賭けた顧客に限定するにはどうすればよいですか? そこにある HAVING 句のコメントを外すと、前半の行のみが返され、後半の行は返されないようです。WHERE句に制限を入れてみたのですが、そのCLAUSEに集計関数を入れることはできないようです。
どうすればいいですか?
ありがとう