MySQL的使用计算的返回值来计算其他值

问题描述 投票:1回答:1

比方说,我有以下内容的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

有没有一种方法可以轻松地做到这一点?我需要能够通过我的成绩查询本身内做到这一点,而不必循环来计算百分比。

sql mysql
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.