Я считаю, что вам нужно изучить возможности использования агрегатных функций в сочетании с OVER(PARTITION BY ...)
например,
SELECT DISTINCT
name, store_id, store_id_count, name_count
FROM (
select name, store_id
, count(*) over(partition by store_id) as store_id_count
, count(*) over(partition by name) as name_count
from category
join film_category using (category_id)
join film using (film_id)
join inventory using (film_id)
join rental using (inventory_id)
) AS example_table
. При использовании агрегатной функции с предложением over вы получаете желаемое количество для каждой строки результата. И кажется, что в этом случае вам это нужно. Обратите внимание, что select distinct
был использован просто для уменьшения конечного числа возвращаемых строк, вам все равно может понадобиться использовать group by
, но я не уверен, что вы это сделаете.
Как только вы получите необходимые значения в производная таблица (псевдонимы example_table
), тогда в общем предложении выбора должно быть просто арифметическое c.