Как посчитать количество элементов определенного типа в таблице в sql?
У меня есть таблица с именем Movie, с атрибутом актеров. актеры_типа специфичны и выглядят так:
GEORGE.ACTOR_TYPE('Clint Eastwood', 'Christopher Carley', 'Bee Vang', 'Ahney Her')
ACTOR_TYPE реализован как varray(5) из varchar(20)
запрос, который я пытался посчитать количество фильмов для каждого актера:
select m.title, a.column_value, count(m.title)
from movie m, table(m.actors) a
group by m.title, a.column_value
order by a.COLUMN_VALUE
который дает мне счет каждой строки (?), а не количество фильмов для каждого актера. выход как показано ниже:
я пытаюсь получить список актеров, которые снимались в нескольких фильмах, и показать название фильма и актера. но когда я добавлю m.title в оператор выбора, он будет считать каждую строку. Это другой запрос, который я написал:
select a.column_value, count(m.title)
from movie m, table(m.actors) a
having count(m.title) > 1
group by a.column_value
order by a.COLUMN_VALUE
и результат:
Мне также нужно добавить заголовок к выводу, но когда я его добавлю, все значения будут равны единице, как в первой таблице.
Там нет таблицы для актеров, мы создаем таблицу для нее через table(m.actors) a
чтобы получить доступ к его пунктам
1 ответ
Вы должны удалить m.title из группы по и выбору, потому что вы собираетесь считать, что согласно действующему субъекту. Я предполагаю, что column_value - это общий столбец между двумя таблицами, поэтому я использовал это при соединении.
select a.column_value, count(m.title)
from movie m
join m.actors a on m.column_value=a.column_value
group by a.column_value
order by a.COLUMN_VALUE