重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

以下のような表があります。

カテ 年 上下期 売り上げ
------------------------
A  2011  1  10
A  2011  2  12
A  2012  1  9
A  2012  2  11
B  2011  1  11
B  2011  2  15
B  2012  1  8
B  2012  2  10

ここからsqlを使ってどの年のどのカテゴリの年間総売上が一番多いかを結果として出したいです。

なので

カテ 年 総売上
----------------
B 2011 26

という結果が欲しいのですがどうすればよいですか?

SUMを使って年間の総売上は出せるのですがそこからMAXを使っても上のような結果がでません。

またカテゴリに関係なく総売上(A+B)が一番多い年を出すにはどうしたらよいですか?

よろしくお願いします。
なんかうまく表のスペースが反映されなくて見難くてすみません。

A 回答 (4件)

> TOP句がうまく機能しないんです・・・。



あっ、しまった。昇順ですので総売上が一番小さいのが表示レさてしまいますね。
ORDER BY句を降順に変更してください。


ORDER BY 総売上 DESC;
    • good
    • 0

こんな感じかな?



SELECT TOP 1 カテ, 年, 総売上
FROM (
SELECT カテ, 年, Sum(売り上げ) AS 総売上
FROM テーブル名
GROUP BY カテ, 年
)
ORDER BY 総売上;

って、ANo.1さんのヒントをそのままSQLにしただけですが。

ANo.2 だと、上位1件に絞り込めないと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お礼が遅れてすみません。

No.1さんのお礼にも書きましたが
TOP句がうまく機能しないんです・・・。
でもFROMの所に()を使って条件を書けることを知らなかったので
すごく参考になりました。ありがとうございます。

お礼日時:2012/10/31 10:40

select カテ , 年 , max(uri) from (


select カテ , 年 , sum(売上) as uri from table
group by カテ , 年
)
group by カテ , 年

select 年 , max(uri) from (
select 年 , sum(売上) as uri from table
group by 年
)
group by 年

こんな感じでしょうか。
未検証です・・スミマセン。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お礼が遅れてすみません。

これは試してみたのですがトップ1が出てきませんでした。
でもできればmaxを使って出したかったので参考になりました。
ありがとうございます:)

お礼日時:2012/10/31 10:38

こんちは。



全部教えたら面白くないと思うので構文はご自身でどうぞ。

>>SUMを使って年間の総売上は出せるのですがそこからMAXを使っても上のような結果がでません。

んー。そこまで行ってるなら、「総売上」でソートかけて、上位1レコード(top句)だけ取得すればいいんじゃないかと。


>>総売上(A+B)が一番多い年を出すには

上の奴が出来ているなら、「group by」句は使ってますよね?

「年」でgroup byして、総売上のソートを行うだけ。
ですよ。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お礼が遅れてすみません。

TOP句というものの存在を知りませんでした!
調べてみて使ってみたのですが、どうもうまくいきません・・・。
書き忘れてしまったのですがUbuntuのDB2を使っています。
何か関係あるのでしょうか・・・。

お礼日時:2012/10/31 10:36

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

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