Oracle SQL查询获取计数

时间:2016-07-06 19:01:58

标签: sql oracle11g

我有一张不同电影的表格,每部电影都有一些副本:

inventory_id  film_id   store_id
     1           1         1
     2           1         1
     3           2         1
     4           2         1

我需要计算每部电影的频率并计算不同影片的数量,也可以使用相同数量的副本,例如:

Copies    Counts
  2         2

我写了这个:

select DISTINCT COUNT(*) as Copies, 
       (select COUNT(*) from (select COUNT(*) as Copies from inventory
           group by film_id
           having store_id = 1)
       group by Copies
) as Counts from inventory
where store_id = 1
group by film_id
order by Copies DESC

结果就像:

Copies     Counts
   4         73
   3         73
   2         73 

我不明白为什么Counts都具有相同的价值。我该怎么办呢?

1 个答案:

答案 0 :(得分:0)

基于此描述:

  

我需要计算每部电影的频率并计算数量   不同的电影也有相同数量的副本

您似乎想要直方图查询的直方图:

select copies, count(*) as num_films, min(film_id), max(film_id) 
from (select film_id, count(*) as copies
      from inventory
      group by film_id
     ) f
group by cnt
order by cnt;

以下查询正在做一些完全不同的事情,包括按商店过滤。