Mysql 如何根据与分组总和的平均值相比较的分组总和进行选择
我有一张由电影、类别和价格组成的表格。 现在我只想选择总价格(该类别下每部电影的所有价格之和)高于这些类别总价格平均值的类别。 我已经能够找到平均的总价格(感谢这个网站),但不能结合起来。 以下是查询:Mysql 如何根据与分组总和的平均值相比较的分组总和进行选择,mysql,sql,mysql-workbench,mysql-error-1111,Mysql,Sql,Mysql Workbench,Mysql Error 1111,我有一张由电影、类别和价格组成的表格。 现在我只想选择总价格(该类别下每部电影的所有价格之和)高于这些类别总价格平均值的类别。 我已经能够找到平均的总价格(感谢这个网站),但不能结合起来。 以下是查询: -- Return the average sums of the price per category SELECT AVG(sum_price) FROM ( SELECT category, sum(price) AS sum_price FROM film_list GROUP BY
-- Return the average sums of the price per category
SELECT AVG(sum_price)
FROM
(
SELECT category, sum(price) AS sum_price
FROM film_list
GROUP BY category
) AS inner_query;
-- Return category and its total price
SELECT category, SUM(price)
FROM film_list
GROUP BY category;
--[Error] Return only the category with sums of price larger than the average of sum of prices
SELECT category, SUM(price)
FROM film_list
WHERE SUM(price) >
(
SELECT AVG(sum_price)
FROM
(
SELECT category, sum(price) AS sum_price
FROM film_list
GROUP BY category
) AS inner_query
);
任何帮助都将不胜感激,谢谢 使用窗口函数最容易解决此问题:
SELECT c.*
FROM (SELECT category, SUM(price) AS sum_price,
AVG(SUM(price)) OVER () as avg_total_price
FROM film_list
GROUP BY category
) c
WHERE sum_price > avg_total_price
使用窗口函数最容易解决此问题:
SELECT c.*
FROM (SELECT category, SUM(price) AS sum_price,
AVG(SUM(price)) OVER () as avg_total_price
FROM film_list
GROUP BY category
) c
WHERE sum_price > avg_total_price
尝试添加
groupby
,然后使用having
SELECT category, SUM(price)
FROM film_list
GROUP BY category
HAVING SUM(price) >
(
SELECT AVG(sum_price)
FROM
(
SELECT category, sum(price) AS sum_price
FROM film_list
GROUP BY category
) AS inner_query
);
尝试添加
groupby
,然后使用having
SELECT category, SUM(price)
FROM film_list
GROUP BY category
HAVING SUM(price) >
(
SELECT AVG(sum_price)
FROM
(
SELECT category, sum(price) AS sum_price
FROM film_list
GROUP BY category
) AS inner_query
);
请提供示例数据和所需结果。您可能希望使用
HAVING
子句。请提供示例数据和所需结果。您可能希望使用HAVING
子句。哇,真管用!谢谢哇,真管用!谢谢它起作用了!刚才查了OVER子句,现在我知道了窗口函数。谢谢它起作用了!刚才查了OVER子句,现在我知道了窗口函数。谢谢