2009-10-26 6 views
1

이것은 설명하기가 어려울 수 있으므로 나와 함께 맨손으로.다른 값을 계산하기 위해 계산 된 반환 값을 사용하는 MySQL

의 내가 다음에 SELECT 문을 있다고 가정 해 봅시다 :

SUM(st.tafPoints/200) as totalFriendReferrals, 
SUM(CASE WHEN st.gender = "m" THEN st.tafPoints/200 ELSE 0 END) as maleFriendReferrals, 
SUM(CASE WHEN st.gender = "f" THEN st.tafPoints/200 ELSE 0 END) as femaleFriendReferrals 

은 내가 totalFriendReferrals에 따라 maleFriendReferrals의 비율을 계산해야합니다. 이들은 둘 다 파생됩니다 (예 : 원래 열 목록에 없음). 내가 좋아하는 일을하려고 따라서 경우 :

CONCAT((maleFriendReferrals/totalFriendReferrals) *100 , '%') as malePercentReferrals 

을하지만 오류가 발생합니다 :

Unknown column 'maleFriendReferrals' in 'field list' – 1 ms 

은 쉽게 할 수있는 방법이 있나요? 쿼리 자체 내에서이 작업을 수행 할 수 있어야하고 결과를 반복하여 백분율을 계산할 필요가 없습니다.

답변

3

당신은 하위 쿼리

SELECT CONCAT((maleFriendReferrals/totalFriendReferrals) *100 , '%') as malePercentReferrals 
FROM 
    (SELECT 
    SUM(st.tafPoints/200) as totalFriendReferrals, 
    SUM(CASE WHEN st.gender = "m" THEN st.tafPoints/200 ELSE 0 END) as maleFriendReferrals, 
    SUM(CASE WHEN st.gender = "f" THEN st.tafPoints/200 ELSE 0 END) as femaleFriendReferrals 
    FROM st) AS subquery 
+0

감사합니다 사람에게 원래 쿼리를 넣어한다! 그게 내 문제를 완전히 해결해 줬어. – Khuffie

관련 문제