是否可以在案例中使用SUM的结果?我目前的查询是这样的:
SELECT USERNAME, SUM(AMOUNT),
CASE SUM(AMOUNT)
WHEN SUM(AMOUNT) = 0.0 THEN 1
WHEN SUM(AMOUNT) < 50.0 THEN 2
WHEN SUM(AMOUNT) > 75.0 THEN 4
END AS gid, 0 FROM payments GROUP BY USERNAME;
这对我来说很好,但产生了这个:
审查13.00 NULL 0
甚至可以这样做吗?
答案 0 :(得分:1)
不可能这样 - 在整个结果集已知之后计算聚合函数,但是在每行级别评估案例。
您需要在HAVING
子句中使用此功能。
答案 1 :(得分:1)
由于聚合函数的约束,如Marc B's answer中所述,另一种解决方案是首先获取记录,然后在所需字段上应用聚合函数。
SELECT
USERNAME,
SUM_AMOUNT,
CASE
WHEN SUM_AMOUNT = 0 THEN 1
WHEN SUM_AMOUNT < 50 THEN 2
WHEN SUM_AMOUNT > 75 THEN 4
END AS gid,
0
FROM (
SELECT USERNAME, SUM(AMOUNT) SUM_AMOUNT,
FROM payments
GROUP BY USERNAME
) USER_AMOUNTS