電子書籍の厳選無料作品が豊富!

いつもお世話になっています。
オラクルではないのですが、SQLの質問が多く感じたため、質問させていただきました。

タイトルの通り、相関サブクエリはグループ化した状態で行えるのか教えていただきたいんです。

課題は、売上表(Sales)から、売上数量(Quantity)の平均の10倍よりも売上数量(Quantity)の最大の方が大きい商品IDを見つけ出す。というものです。
考えたSQLは

SELECT
__S1.ProductID
FROM
__Sales AS S1
GROUP BY
__ProductID
HAVING
__AVG(Quantity) * 10
< (SELECT
   __MAX(Quantity)
   FROM
   __Sales AS S2
   GROUP BY
   __ProductID
   HAVING
   __S1.ProductID = S2.ProductID)

です。考え方として
相関サブクエリで、現在の商品ID(HAVING S1.ProductID = S2.ProductIDのところ)の商品数量の最大値を比較として返そうと思いましたが、どうもうまくいきません。

こういった相関サブクエリは作れないのでしょうか?

A 回答 (1件)

・課題の解決策に相関副問い合わせが必要か?


・仮に、相関副問い合わせが必要だとして、相関条件が適切か?

今の課題であれば、相関服問い合わせなど必要ない。
もっと課題が複雑で、相関副問い合わせを使わざるおえない課題でも、他の書き方を考えた方が
合理的な問い合わせになるはず。

ということで、最初から考え直した方がいいでしょう。

>こういった相関サブクエリは作れないのでしょうか?
書けても良さそうな気もしますが、書けなくても問題にならないのでしょうね。
同様の相関問い合わせは、他に幾らでも書き換えが可能なので。
例えば、問い合わせが2つの表だった場合、多くの人は内部結合で対応すると思いますよ。

でも、今回のケースでは、サブクエリも内部結合も必要ありませんが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

相関副問い合わせの課題だったのですが、使わなくてもいいのですね・・。
まだまだ修行の身で、どの手法を使ったらよいか選択が難しいです。

相関副問い合わせではない方法でちょっと考えてみようと思います。
スピードも遅いと聞きますし。

お礼日時:2007/10/04 15:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!