Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取每个项目的百分比差异';通过将其与字段的平均值进行比较来确定其价格_Mysql_Sql - Fatal编程技术网

Mysql 获取每个项目的百分比差异';通过将其与字段的平均值进行比较来确定其价格

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

您如何获得每个类别的平均价格,将其与该类别的每个项目进行比较,并获得百分比差异

例如,在下表中,玩偶的平均价格为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 - 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;