プロが教える店舗&オフィスのセキュリティ対策術

オラクル10を使っています。

select NAMAE max(TEN) from KYOUKA WHERE OK=1 and CLASS IS ('A', 'B', 'C');

で単一グループのグループ関数ではありません。
というエラーになります。

CLASS | OK | NAMAE | TEN |
--------------------------
A 1 a01 50
A 1 a02 60
B 1 b01 10
C 1 c01 70
C 0 c02 100

a02 60
b01 10
c01 70
という結果になってほしいです。

A 回答 (2件)

SQLの根本的な文法が理解できていないのかと



GROUP BY 句について調べてみましょう
    • good
    • 2

質問から判断するに、SQLの基礎を学んでいる最中のようですね。


#1の方が仰る通り、GROUP BYについて学ぶ必要があります。
エラー内容はSELECT句にグループ関数MAXが使用されているのに、NAMAEでグループ化していないからかと思います。
語尾にGROUP BY NAMAEが必要です。
しかし、それだけでは
a02 60
b01 10
c01 70
にはなりません。
取得したいデータの条件がイマイチ質問からでは分かりません。
「CLASSごとTENが最も多きいデータを取得する。
対象となる項目は、OKの値が 1 で、かつCLASSの値が 'A','B','C'のいずれかである」ということで宜しいでしょうか?
質問文の内、確実にご指摘できる箇所として、
CLASS IS ('A', 'B', 'C') は CLASS IN ('A', 'B', 'C')のぐらいでしょうか?
求めている抽出結果を拝見する限り、サブクエリなどの手法が必要になる可能性があります。
失礼ながら質問者様の理解度より難易度が高い記述になるかと思います。
抽出したい内容・条件などを明確に補足していただければと思います。
    • good
    • 3

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A