如何计算sql表中特定类型的项目数?

时间:2018-10-10 08:48:29

标签: sql collections types count varray

我有一个名为Movie的表,具有actors属性。 actors_type是特定的,如下所示:

GEORGE.ACTOR_TYPE('Clint Eastwood', 'Christopher Carley', 'Bee Vang', 'Ahney Her')

ACTOR_TYPE被实现为varchar(20)的varray(5)

我试图计算每个演员的电影数量的查询是:

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

我想要获得的是列出在多部电影中扮演过的演员,并显示电影标题和演员。 但是当我在select语句中添加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

没有用于Actor的表,我们通过table(m.actors) a为其创建表以访问其项

1 个答案:

答案 0 :(得分:0)

您必须从group by中删除m.title并进行选择,因为您要根据actor进行计数。我假设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