• ベストアンサー

sum()の出力結果順に並び替えをするSQL文

皆さん、こんばんは。 mysql 3.23.49-8.13 を使用しています。 mysql> select name,team_name,sum(point),count(*),max(size),min(size) from data where kind = 'hoge' group by name; とした時、 +------+---------+----------+--------+---------+---------+ | name |team_name|sum(point)|count(*)|max(size)|min(size)| +------+---------+----------+--------+---------+---------+ | hro | | 25 | 2 | 46 | 42 | | hro2 |Project-F| 15 | 1 | 47 | 47 | | hro3 |Project-F| 90 | 5 | 66 | 39 | +------+---------+----------+--------+---------+---------+ という結果が得られるのですが、 +------+---------+----------+--------+---------+---------+ | name |team_name|sum(point)|count(*)|max(size)|min(size)| +------+---------+----------+--------+---------+---------+ | hro3 |Project-F| 90 | 5 | 66 | 39 | | hro | | 25 | 2 | 46 | 42 | | hro2 |Project-F| 15 | 1 | 47 | 47 | +------+---------+----------+--------+---------+---------+ というように、sum(point) 順に並べた結果を得るには、どのようなSQL文を発行したらよいのでしょうか? select name,team_name,sum(point),count(*),max(size),min(size) from data where kind = 'hoge' group by name order by sum(point) desc; ってやれると楽だったんですが・・・・・(^^; お知恵をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

ORDER BYは番号でも指定できるし、名前を付ける方法もあります。 (1)ORDER BYで参照するために、名前を付ける select name,team_name,sum(point) as x, ~  from ~ where ~ order by x desc (2)SELECTする並びの何番目かで指定する select name,team_name,sum(point), ~  from ~ where ~ order by 3 desc

Blackwingls
質問者

お礼

新年早々、ご回答いただきましてありがとうございます。 今回は、(2)の方法を採用いたしまして、無事思ったとおりの出力結果を得ることができました。 as の方法も使い勝手がよさそうなので、今後試していきたいと思います。 大変ありがとうございました。

その他の回答 (1)

  • hola1973
  • ベストアンサー率45% (5/11)
回答No.1

以下のように一度 AS で名前を付けてからORDERするとうまくいきます。 select name,team_name,sum(point) AS p,count(*),max(size),min(size) from data where kind = 'hoge' group by name order by p desc;

Blackwingls
質問者

お礼

ご回答ありがとうございます。 質問を投稿後、chukenkenkou様の(2)の方法を思いつきやってみたところ上手くいきました。 まだまだ、初心者ゆえ思った結果がでず悪戦苦闘の日々です。 AS の方法も今後試してみたいと思います。 新年早々、ありがとうございました。

関連するQ&A