2016-03-29 29 views
-3

select SUM(category) from film_list where title IN actors;SQL。私は私がこだわっているこのSQLクエリ

とこだわっている、私はてSakilaデータベースに働いていると私は55と65膜の間に存在するフィルムの種類を把握しようとしています。これらの カテゴリの名前とカテゴリごとの映画の数を、映画の数でソートして返します。アイデアを投稿しますか?

+0

あなたは今のところそれそれ目的地からね助けるのは役に立たないようです。 MySQLに関する良い本やチュートリアルを見てから、私たちに連絡してください。 – Strawberry

+0

概要スキーマ(多かれ少なかれ最小限のもの)といくつかのサンプルデータ、およびそのデータから期待される出力を提供してください。明らかに、ここでは55行以上の行が多すぎます。 「5と6の間」またはそれに類似したより小さな範囲を使用することを決めることができます。サンプルデータの数行を簡単に提供できるようになります。おそらく2〜3列のデータが必要になると思います(1つはカテゴリ、もう1つは適切かもしれません)。 –

+0

[Sakilaサンプルデータベース](https://dev.mysql.com/doc/sakila/en/)です。これは[データベースの例]の[MySQLのウェブサイト](https://dev.mysql.com/doc/index-other.html)にあります。 – Revenant

答えて

1

。これは、サブクエリと呼ばれるこの

SELECT category, Count(*) AS FilmsCount 
FROM Film_List 
GROUP BY Category 
HAVING Count(*) BETWEEN 55 AND 65 
ORDER BY FilmsCount 
-2

てみ推測でオペレータ

SELECT category, COUNT(*) AS films_per_category 
FROM film_list 
ORDER BY films_per_category 
HAVING COUNT(*) BETWEEN 55 AND 65 
+0

なぜダウンボトムキャスト? –

+0

私の下院議員ではないが、それは非常に信じられないほどだ。映画のタイトルは通常数字ではないので、「BETWEEN」は機能しません。同様に、カテゴリはおそらく数値ではないので、SUMは意味をなさない - それは問題でもない。 –

+0

それは確かに良いですが、GROUP BY句はどうなりましたか?これはほとんどのDBMSで必要ですが、MySQLにはグループ化の分野でいくつかのルールがあります。少なくとも、古典的なSQLでは、節の順序は間違っています。 –

0

間で使用する:

SELECT category, COUNT(*) AS films_per_category 
    FROM film_list 
GROUP BY category 
HAVING COUNT(*) BETWEEN 55 AND 65 
ORDER BY films_per_category 

しかし、あなたはアウトラインスキーマといくつかのサンプルデータを提供したい場合そんなに推測があるではないでしょう。確かに、私たちは55行を見たいとは思っていませんでしたが、デモの目的では、5行から6行までOKです。

1

私はあなたがして、グループが必要だと思うし、

select category, count(*) as num_film 
from film_list 
group by category 
having num_film BETWEEN 55 AND 65 
order by num_fim 
0

を試してみた:

select sum(category) 
from film_list 
where title IN (SELECT title FROM actors); 
+0

あなたの推論を議論してください - あなたはなぜカテゴリーを集計しているのですか?アクターテーブルにタイトル列が含まれているのはなぜですか?カテゴリー名は55-65行などです。 –

+0

情報が欠落していますが、サブクエリを書く方法の例を挙げてください。私には大変なことはしないでください。 – SnakeFoot

関連する問題