Как посчитать количество элементов определенного типа в таблице в sql? - PullRequest
0 голосов
/ 10 октября 2018

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

, что дает мне счетчик каждой строки (?), а не количество фильмов для каждого актера.вывод следующий:

enter image description here

Я пытаюсь получить список актеров, которые снимались в нескольких фильмах, и показать название фильма и актера.но когда я добавлю 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 

и результат:

enter image description here

Мне нужно добавить заголовок квывод тоже, но когда я его добавлю, все счетчики будут равны единице, как первая таблица.

Таблица фильмов: enter image description here

Нет таблицыдля актеров мы создаем для него таблицу через table(m.actors) a, чтобы получить доступ к ее элементам

1 Ответ

0 голосов
/ 10 октября 2018

Вы должны удалить 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
...