只sum(Sum_1415)
更换子查询(select sum(Sum_1415) from dummy)
。否则,您将计算每个客户的增长与上一年所有收入总额的比率,而不是该客户的总额。
您还在ROUND
调用中丢失了一些括号,围绕减法sum(Sum_1516)-Sum(Sum_1415)
。
select CustomerName, SUM(Sum_1415) AS Sum_1415, SUM(Sum_1516) AS Sum_1516,
round((sum(Sum_1516)-Sum(Sum_1415))/SUM(Sum_1415),2) as Percentage
from dummy
group by CustomerName
order by Sum_1415 desc
limit 15
我可能会重构这个为子查询,所以它不是必要保持重复SUM
表达式。
SELECT CustomerName, Sum_1415, Sum_1516, ROUND((Sum_1516-Sum_1415)/Sum_1415, 2) AS Percentage
FROM (SELECT CustomerName, SUM(Sum_1415) AS Sum_1415, SUM(Sum_1516) AS Sum_1516
FROM dummy
GROUP BY CustomerName
ORDER BY Sum_1516 DESC
LIMIT 15) AS x
很难理解你在做什么。使用当前查询显示一些示例数据,预期输出和问题? –
子查询'(从虚拟中选择总和(Sum_1415))'不会被'客户名称'分组,因此它将成为所有客户的总和。 – Barmar
表结构如上。总额1415包含2014-2015年客户收入,总额1516包含同一客户的收入。我们需要添加需要计算的增长百分比列。 – Fresher