Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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 - Fatal编程技术网

如何在mysql中进行大计算

如何在mysql中进行大计算,mysql,Mysql,请详细说明进行此计算的程序 我有两张桌子 1.电影 2.电影类别 film ------------------------------------------- film_id | replacement_cost | rental_rate 1 | 20 | 2.0 2 | 22 | 1.0 3 | 24 | 0.9

请详细说明进行此计算的程序

我有两张桌子 1.电影 2.电影类别

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
不起作用
…很遗憾,在加入并分组之后,您的示例数据只包含一个类别。是的,只有一个对应的胶片。这是一个毫无意义的示例,而且您的预期输出似乎不是从示例数据派生的。