0

私は次の質問に答えなければなりません

「データベースの各年について、その年とその年にリリースされた映画の総数をリストし、これらの合計を降順で表示します。つまり、映画の数が最も多い年が最初に表示されます。年には同じ数の映画があり、年の昇順でこれらを表示します。」

現在、以下のコードを使用して映画をグループ化していますが、並べ替えることができません。

Select YearReleased, count(*)                
from Movies                             
group by YearReleased 

これを注文するために何かを使用したいと思います。最初のクエリの結果を使用するサブクエリを、次の行に沿って作成しようとしています。

(select * from results order by count(*))

しかし、これまでのところ私は失敗しています。これを達成するにはどうすればよいですか、またはこの順序で結果を取得するためのより良い方法はありますか?

4

5 に答える 5

5

「失敗」は、実際のエラーテキストとは対照的に、あまり役に立ちません。また、実行しているベンダーのデータベースがわからないため、テストできません。そうは言っても、次のことが機能するはずです。

select
  YearReleased,
  count(*) as movie_count
  from movies
  group by YearReleased
  order by movie_count desc, YearReleased;

サブクエリは必要ありません!

SQLite3.5.9に対して検証済み。標準に準拠していないもの(SQLite、非常に明確に文書化された方法を除いて)に対して実行している場合、マイレージは異なる場合があります。

于 2009-09-03T05:04:06.857 に答える
0

select * from(Select YearReleased、count(*)as NumReleased from Movies group by YearReleased)order by NumReleased

于 2009-09-03T05:03:57.810 に答える
0
select * from (select YearReleased, count(*) counter
from Movies
group by YearReleased 
) a order by counter

SQLのフレーバーによっては、構文を変更する必要がある場合があります。

于 2009-09-03T05:03:59.540 に答える
0

最初のクエリで:yearReleasedを選択し、count(*)を'count1' として2番目に選択します: count1で並べ替えます

于 2009-09-03T05:05:40.147 に答える
0

そうです、集計を使用すると、count(*) のエイリアスを配置するだけで、列として参照できます。

于 2013-02-19T01:18:32.463 に答える