我有以下查詢,它返回客戶的用戶名,年份和半年,第一個半年的投注計數,第二個半年的投注計數和利潤計算。SAS中的HAVING子句中的彙總函數
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;
quit;
我該如何限制這種情況給在樣本前半段至少有4次投注的客戶?如果我取消註釋HAVING子句,那麼它似乎只返回前半部分的行,並且不返回後半部分行。我試圖把限制放在WHERE子句中,但顯然你不能在這個CLAUSE中放置一個彙總函數。
我該怎麼做?
謝謝
僅供參考,在將來我會建議創建一個簡單的數據集,您可以將這些數據集作爲datalines包含在這些文章中,以便更容易地向您展示有用的示例,而不必單獨提供示例數據來解決您的問題:) – Joe 2013-05-07 16:39:22