【问题标题】:How to count number of items in a specific type in a table in sql?如何计算sql中表中特定类型的项目数?
【发布时间】:2019-03-15 03:03:43
【问题描述】:

我有一个名为 Movie 的表,带有 actor 属性。 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

这给了我每一行的计数(?)而不是每个演员的电影计数。输出如下:

我想要得到的是列出在多部电影中表演的演员并显示电影标题和演员。 但是当我在 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 

结果是:

我也需要将标题添加到输出中,但是当我添加它时,所有计数都将是一个,作为第一个表。

电影表:

Actors 没有表,我们通过table(m.actors) a 为其创建表以访问其项目

【问题讨论】:

  • 从不FROM 子句中使用逗号。 始终使用正确、明确、标准JOIN语法。

标签: sql collections types count varray


【解决方案1】:

您必须从 group by 和 selection 中删除 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

【讨论】:

  • 我收到此错误“表或视图不存在”。我认为没有 m.column_value,因为 Movie 表是一个简单的实体表。我们使用 COLUMN_VALUE 来访问我们创建的集合或可变数组表中的项目。电影表中没有这样的列
  • @Jasmine 然后请分享两个可用的所有列的表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 2023-03-23
  • 2023-03-13
相关资源
最近更新 更多