如何在mysql中进行大计算
请详细说明进行此计算的程序 我有两张桌子 1.电影 2.电影类别如何在mysql中进行大计算,mysql,Mysql,请详细说明进行此计算的程序 我有两张桌子 1.电影 2.电影类别 film ------------------------------------------- film_id | replacement_cost | rental_rate 1 | 20 | 2.0 2 | 22 | 1.0 3 | 24 | 0.9
film
-------------------------------------------
film_id | replacement_cost | rental_rate
1 | 20 | 2.0
2 | 22 | 1.0
3 | 24 | 0.9
4 | 20 | 2.0
5 | 22 | 1.0
6 | 24 | 0.9
7 | 20 | 8.0
8 | 22 | 10
9 | 24 | 0.9
film_category
-----------------------------
film_id | category_id
9 | 1
60 | 2
44 | 3
3 | 1
66 | 1
40 | 10
我希望我的输出能够显示电影类别(电影更换成本和租金之间的平均差异)>15。
下面是什么
-----------------------------------------------
category_id | avg_difference_more_than_15
1 | 16.3
2 | 22.1
2 | 15.6
下面给出了我的代码,但它不起作用。
请纠正我代码中的错误
select category_id
, (AVG(sum(replacement_cost-rental_rate))"x"
from film
, film_category
where film.film_id = film_category.film_id
GROUP
by category_id
having x > 15
@Mubin实现这一点的诀窍是创建一个子查询,以便能够按类别id获得重置成本和租金之间的平均差异 以下是您的查询的外观:
SELECT `category_id`,
AVG(`difference`) AS `avg_difference_more_than_15`
FROM (SELECT `fc`.`category_id`,
`fc`.`film_id`,
`f`.`replacement_cost`,
`f`.`rental_rate`,
`f`.`replacement_cost` - `f`.`rental_rate` AS `difference`
FROM `film_category` AS `fc`
JOIN `film` AS `f` ON `f`.`film_id` = `fc`.`film_id`
GROUP BY `fc`.`category_id`, `fc`.`film_id`) AS `der`
GROUP BY `category_id`
HAVING AVG(`difference`) > 15
如果这对你不起作用,请让我知道,并说明原因,我会尽我所能为你提供你所需要的
希望这有帮助 Define
不起作用
…很遗憾,在加入并分组之后,您的示例数据只包含一个类别。是的,只有一个对应的胶片。这是一个毫无意义的示例,而且您的预期输出似乎不是从示例数据派生的。