質問 |
||
| 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 |
|
| |
| この回答へのお礼 | 回答ありがとうございます。 相関副問い合わせの課題だったのですが、使わなくてもいいのですね・・。 まだまだ修行の身で、どの手法を使ったらよいか選択が難しいです。 相関副問い合わせではない方法でちょっと考えてみようと思います。 スピードも遅いと聞きますし。 |