Как я могу сделать большой расчет в mysql - PullRequest
0 голосов
/ 18 апреля 2020

, пожалуйста, разработайте процедуру, чтобы сделать этот расчет.

У меня есть две таблицы 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 

1 Ответ

0 голосов
/ 19 апреля 2020

@ Уловка в этом заключается в создании подзапроса, который позволяет получить среднюю разницу между стоимостью замещения и ставкой аренды по идентификатору категории.

Вот как должен выглядеть ваш запрос:

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

Если это не сработает для вас, пожалуйста, дайте мне знать вместе с некоторыми разъяснениями, почему, и я сделаю все возможное, чтобы получить то, что вам нужно.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...