MySQL使用计算的返回值来计算其他值
问题描述:
这可能很难解释,所以与我一起裸露。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
有没有一种方法可以轻松地做到这一点?我需要能够在查询本身中完成此操作,而不必循环查看结果来计算百分比。
答
你应该把原来的查询子查询
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
感谢的人!这完全解决了我的问题。 – Khuffie 2009-10-26 19:51:39