ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3397166 相関サブクエリの中で、グループ化はできない?
質問者:guttten いつもお世話になっています。
オラクルではないのですが、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のところ)の商品数量の最大値を比較として返そうと思いましたが、どうもうまくいきません。

こういった相関サブクエリは作れないのでしょうか?
困り度:
  • 困っています
質問投稿日時:
07/10/03 10:47
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.1 ・課題の解決策に相関副問い合わせが必要か?
・仮に、相関副問い合わせが必要だとして、相関条件が適切か?

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

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

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

でも、今回のケースでは、サブクエリも内部結合も必要ありませんが。
回答者:k_o_r_o_c_h_a_n
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
07/10/04 01:28
この回答へのお礼回答ありがとうございます。

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

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