プロが教えるわが家の防犯対策術!

皆さん、こんばんは。

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;
ってやれると楽だったんですが・・・・・(^^;

お知恵をお貸しください。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/05 18:30

以下のように一度 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;
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/01/05 18:26

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

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