0
タイトルが私の問題に対応しているかどうかはわかりませんが、これは私が記述できる最良の方法です。再帰文を使用したSQL -
理論的にはhaving節に再帰的な文を持つクエリがあるのだろうかと思っていました。例:
タイトルが私の問題に対応しているかどうかはわかりませんが、これは私が記述できる最良の方法です。再帰文を使用したSQL -
理論的にはhaving節に再帰的な文を持つクエリがあるのだろうかと思っていました。例:
これは実際の再帰ではありませんが、同じフレーズを2回使用して、最も高いカウントを持つ個体を見つけることができます。これはhttp://sqlzoo.net/wiki/More_JOIN_operations
フレーズ
SELECT actor.name,count(movieid) moviesPerActor
FROM actor join casting ON actor.id=actorid
GROUP BY actor.name
リスト各アクター名と作られた映画の数で映画のデータベースに基づいています。
同じフレーズが2回使用されます。 Aバージョンは、1人の俳優が作った映画の中で最も多くの映画を見つけるために使用され、Bバージョンは、その俳優を識別するために使用されます。あなたがより効率的に最高値を持つ要素を識別するために、ウィンドウ関数を使用することができます(MSSQLとOracleを含む)SQLのいくつかのバージョンでは
SELECT B.name from
(SELECT MAX(moviesPerActor) as highestNumberOfMovies
FROM(
SELECT actor.name,count(movieid) moviesPerActor
FROM actor join casting ON actor.id=actorid
GROUP BY actor.name
) as A) as A1
JOIN
(
SELECT actor.name,count(movieid) moviesPerActor
FROM actor join casting ON actor.id=actorid
GROUP BY actor.name
) as B
ON B.moviesPerActor = highestNumberOfMovies
。
これはできません。左側の 'science_fiction_per_author'を' COUNT(*) 'に置き換えることはできますが、' MAX(COUNT(*)) 'のような別の集約関数の中に入れることはできません。 –
どのDBMSを使用していますか –
さらに、[古いスタイルのJOIN構文]を使用しないでください(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick -using-old-style-joins.aspx) –