2014-02-06 9 views
0

사례에서 SUM의 결과를 사용할 수 있습니까? 나의 현재 쿼리는 다음과 같다 :SUM 함수가있는 MySQL CASE

검열 13.00 NULL 0

그렇게도 가능 : 그다지 잘 보이지만이 발생

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; 

?

답변

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 
1

이와 같이 불가능합니다. - 전체 결과 집합을 알고 있지만 집계 함수가 계산되지만 행당 수준에서 대/소문자가 계산됩니다.

HAVING 절에이 내용이 필요합니다.