首页 > 解决方案 > 列中出现的次数

问题描述

我有下表

actor_id    movie_id
---------------------
   1           20
   2           10
   3            8
   4            6
   1           21

我需要以下输出

actor_id    movie_count
-----------------------
   1           2
   2           1
   3           1
   4           1

标签: sqlgroup-bycount

解决方案


你需要“聚合”。要计算每个演员有多少部电影,您可以这样做:

select
  actor_id,
  count(*) as movie_count
from t
group by actor_id

现在,如果你需要计算每个演员有多少部不同的电影,你可以这样做:

select
  actor_id,
  count(distinct movie_id) as movie_count
from t
group by actor_id

如果您更改预期结果,您应该问另一个问题。无论如何,这是添加演员名字的增强查询:

select
  c.*, 
  a.first_name, 
  a.id
from (
  select
    actor_id,
    count(*) as movie_count
  from t
  group by actor_id
) c
join actor a on a.actor_id = c.actor_id

推荐阅读