私はいくつかのSQL演習を行っていますが、これから説明する演習にとらわれています。
メーカー、モデル、タイプの3つの列を持つproductというテーブルがあります。
これはの結果ですselect * from product
演習では、次のように述べています。同じタイプのモデルのみを製造し、それらのモデルの数が1を超えるメーカーを見つけます。推測:メーカー、タイプ。
正しいクエリはこれを返すはずです:
私のアプローチは、最初にどのメーカーが1種類の製品しか製造していないかを確認し、次に1つのモデルしかないメーカーを除外することでした。これを行うために、次のクエリを使用しました。これは、メーカーを表示することしかできず、タイプと演習で両方を要求することはできないという事実を除いて、正しい結果を返します。
これは私の質問です:
SELECT
DISTINCT maker
FROM product
GROUP BY maker
HAVING COUNT(distinct type) = 1
AND
COUNT(model)> 1
そしてそれはこれを返します:
次に、これを実行してタイプも表示しようとすると、次のようになります。
SELECT
DISTINCT maker,type
FROM product
GROUP BY maker,type
HAVING COUNT(distinct type) = 1
AND
COUNT(model)> 1
これは私が得るものです:
これが期待どおりに機能しない理由について何か考えがありますか?この問題を解決するためにあなたは何をしますか?私はこれを3時間以上解決しようとしてきましたが、成功しませんでした。:( お願い助けて。