0

問題:俳優の最小数が演じた映画はいくつありますか?

テーブル:

title | year | person | role (actor, director, writer, producer)

私がしたこと:

SELECT title, count(role) 
FROM movie_table 
where role='actor' 
GROUP BY title 
ORDER by count(role) ASC;

私が得たもの:

title (007, Dark Knight, Superman, Batman ...) | count(role) (1, 1, 2, 2,...)

私が必要としているのは、この場合は2(007とダークナイト)である最小の俳優の役割を持つ映画を数える方法です。

4

1 に答える 1

1

あなたが何を望んでいるのかははっきりしていませんが、これを求めているようです:

SELECT title, count(role) 
FROM movie_table 
where role='actor' 
GROUP BY title 
HAVING count(role) = 1
ORDER by count(role) ASC;

あなたのコメントに基づいて、次のようなものを使用できます。

SELECT title
FROM movie_table 
where role='actor' 
GROUP BY title 
HAVING count(role) = (select min(cnt)
                      from (select count(role) cnt
                            from movie_table
                            group by title) c)
ORDER BY count(role);

デモで SQL Fiddle を参照してください

次に、合計だけが必要な場合は、count()関数をクエリに適用します。

select count(title) Total
from
(
  SELECT title
  FROM movie_table 
  where role='actor' 
  GROUP BY title 
  HAVING count(role) = (select min(cnt)
                        from (select count(role) cnt
                              from movie_table
                              group by title) c)
) x

SQL Fiddle with Demoを参照してください

于 2012-10-23T18:25:04.133 に答える