SELECT userid,
(SELECT CASE WHEN (COUNT(CASE WHEN casinowagers != 0
THEN 1
ELSE null
END)
+ COUNT(CASE WHEN depositmade_amt != 0
THEN 1
ELSE null
END)) >= 3
AND (Round(sum(totalhold - playercomps - freemoney - (depositmade_amt*.1)),2)) >= 10
THEN "VIP"
ELSE "NON-VIP"
END as VIPcheck
FROM player_activity
WHERE YEAR(txndate) = YEAR(CURRENT_DATE - INTERVAL 3 MONTH)
AND MONTH(txndate) = MONTH(CURRENT_DATE - INTERVAL 3 MONTH)
) as vipMonthStatus,
(COUNT(CASE WHEN casinowagers != 0
THEN 1
ELSE null
END)
+ COUNT(CASE WHEN depositmade_amt != 0
THEN 1
ELSE null
END)) as activityCount,
(Round(sum(totalhold - playercomps - freemoney - (depositmade_amt*.1)),2)) as Value,
FROM player_activity
WHERE userid = 2023410
GROUP BY year(txndate),month(txndate)
LIMIT 1000
したがって、vipMonthのステータスは常に「VIP」として返されます。ただし、5月の場合(以下の「場所」のため)、1つの預金と1つの賭け金のみが作成されたため、「ノンビップ」である必要があります。CASE文がSQLのように機能しない
何がありますか?
(WHERE YEAR(txndate) = YEAR(CURRENT_DATE - INTERVAL 3 MONTH)
AND MONTH(txndate) = MONTH(CURRENT_DATE - INTERVAL 3 MONTH))
このサブクエリで 'WHERE userid = 2023410'が必要であると推測しています(またはそれを同等のWHEREと関連付ける)。 – Uueerdo