2017-09-26 165 views
0

我不理解,为什么我越来越0.01%而不是100%,请告知如何计算MYSQL中的百分比?

这是我的查询:

SELECT Total_Price,concat(round(total_price/(SUM(total_price)*100),2),'%') AS percentage 
FROM Sales 
WHERE Department IN ('SPORT','MUSIC') 
AND DATE BETWEEN '2016-01-01' AND '2016-03-30' 

感谢

+2

您的查询没有意义。你有一个聚合,但没有“group by”。 –

+0

@GordonLinoff MySQL对于聚合非常宽容。你可以用MySQL做很多错误的查询,它仍然可以工作。看看这个小提琴:http://sqlfiddle.com/#!9/531d0e/2 – Genu

+0

@Genu如果你有一个吸蛋的示范,也是有用的。 – Strawberry

回答

0

尝试总做一个子查询.. 。

select t1.total_price, (t1.total_price/t2.grand_total)*100 as pc 
from MyTable t1 
inner join 
(
select sum(tx.total_price) as grand_total 
from MyTable tx 
AND tx.DATE BETWEEN '2016-01-01' AND '2016-03-30' 
) t2 
on 1=1 
WHERE Department IN ('SPORT','MUSIC') 
AND DATE BETWEEN '2016-01-01' AND '2016-03-30' 
+0

谢谢。我收到这样的错误:“你的SQL语法有错误;查看与你的MySQL服务器版本相对应的手册,以便在'AND tx.DATE BETWEEN'2016-01-01'AND'2016附近使用正确的语法-03-30')t2在1 = 1处我处在第7行。你可以提供建议吗? – DjangoPy

+0

解决方法:SELECT Total_Price,concat(round(total_price /(SUM(total_price))* 100,2),'%'AS百分比 FROM Sales WHERE Department IN('SPORT','MUSIC') AND日期'2016-01-01'和'2016-03-30'; – DjangoPy