比方说,我有以下内容的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
我需要计算maleFriendReferrals的基础上,totalFriendReferrals百分比。这些都衍生(即,原本没有在列的列表)值。所以,如果我试着这样做:
CONCAT( (maleFriendReferrals/totalFriendReferrals) *100 , '%') as malePercentReferrals
但是,我得到一个错误:
Unknown column 'maleFriendReferrals' in 'field list' – 1 ms
有没有一种方法可以轻松地做到这一点?我需要能够通过我的成绩查询本身内做到这一点,而不必循环来计算百分比。
你应该把原来的查询子查询
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