Mysql 获取每个项目的百分比差异';通过将其与字段的平均值进行比较来确定其价格
您如何获得每个类别的平均价格,将其与该类别的每个项目进行比较,并获得百分比差异 例如,在下表中,玩偶的平均价格为24美元,因此B项($18)应为-25%,这比该类别的平均价格便宜。((18-24) / 24) * 100). 如何连接这两个查询,然后进行计算Mysql 获取每个项目的百分比差异';通过将其与字段的平均值进行比较来确定其价格,mysql,sql,Mysql,Sql,您如何获得每个类别的平均价格,将其与该类别的每个项目进行比较,并获得百分比差异 例如,在下表中,玩偶的平均价格为24美元,因此B项($18)应为-25%,这比该类别的平均价格便宜。((18-24) / 24) * 100). 如何连接这两个查询,然后进行计算 SELECT price from `product` GROUP BY name SELECT AVG(price) AS average_Price from `product` GROUP BY category (price
SELECT price from `product` GROUP BY name
SELECT AVG(price) AS average_Price from `product` GROUP BY category
(price - AVG(price))/AVG(price)*100
表示例:
ID name category price
1 A Puzzle 5
2 B Doll 18
3 C Puzzle 10
4 D Outdoor 20
5 E Brainteaser 2
6 F Outdoor 40
7 G Doll 30
8 H Brainteaser 9
您可以这样做,使用子查询的自联接,此子查询将获得每个类别的平均价格,然后在选择部分执行您的计算
select t.*,tt.avg_price
,((t.price - tt.avg_price ) / tt.avg_price *100) precent_diff
from
t
join (select category ,avg(price) avg_price from t group by category) tt
on(t.category = tt.category)
要有百分号,请使用concat和计算部分的最终结果
select t.*,tt.avg_price
,
concat(
((t.price - tt.avg_price ) / tt.avg_price *100)
,'%')
precent_diff
from
t
join (select category ,avg(price) avg_price from t group by category) tt
on(t.category = tt.category)
使用内部查询获取每个类别的平均值,然后使用
连接,如下所示:
SELECT name, product.category, price, ((price - avg_price)/avg_price)*100 as diff
FROM product
JOIN (
SELECT category, AVG(price) as avg_price
FROM product
GROUP BY category
) t
ON t.category = product.category
工作演示:带有嵌套查询:
select a.name, a.category, (price-avg_price)/avg_price*100 ratio
from product a
join (
select category, avg(price) avg_price
from product a
group by a.category) b on a.category = b.category;