SQLに関して質問です。


列A 名前
列B 投資金額
列C 配当金額

というテーブルがあります。

列A 列B 列C
木村 100 200
山田 100  0
伊藤 200 540
木村 120 140
山田 500 240
伊藤 420 140

データは上記の通りです。

同一の名前はグルーピングし、利益率(配当/投資)を算出し、利益率の高い順に並び替えしたいと思います。

つまり結果は以下の通りです。

木村 154.5%
伊藤 109.7%
山田 40.0%

SQLでこれを行う事は可能でしょうか?
可能ならばSQL文を教えていただければと思います。

宜しくお願い致します。

ソフトはMYSQLの5.1.22です。

回答の条件
  • 1人2回まで
  • 登録:2008/01/01 01:24:53
  • 終了:2008/01/01 13:50:46

ベストアンサー

id:chuken_kenkou No.2

chuken_kenkou回答回数722ベストアンサー獲得回数542008/01/01 04:59:41

ポイント35pt

まず、利益率を表示するSQL例です。

select 名前,sum(配当金額)/sum(投資金額)*100 as 利益率
 from tbl1
 group by 名前
 order by 利益率 desc

小数点以下1桁まで求める(2桁目で四捨五入)場合のSQL例です。

select 名前,round(sum(配当金額)/sum(投資金額)*100,1) as 利益率
 from tbl1
 group by 名前
 order by 利益率 desc
id:ruijio

有難うございます。

後者のサンプルで処理する事ができました。

有難うございます。

2008/01/01 13:50:34

その他の回答(1件)

id:un0 No.1

un0回答回数651ベストアンサー獲得回数322008/01/01 02:05:10

ポイント35pt

select 名前,sum(配当金額)/sum(投資金額) as 利益率

from テーブル名

group by 名前

order by 2 desc

こんな感じでいかがでしょうか。

id:ruijio

ありがとうございます。

解決しました

2008/01/01 13:50:04
id:chuken_kenkou No.2

chuken_kenkou回答回数722ベストアンサー獲得回数542008/01/01 04:59:41ここでベストアンサー

ポイント35pt

まず、利益率を表示するSQL例です。

select 名前,sum(配当金額)/sum(投資金額)*100 as 利益率
 from tbl1
 group by 名前
 order by 利益率 desc

小数点以下1桁まで求める(2桁目で四捨五入)場合のSQL例です。

select 名前,round(sum(配当金額)/sum(投資金額)*100,1) as 利益率
 from tbl1
 group by 名前
 order by 利益率 desc
id:ruijio

有難うございます。

後者のサンプルで処理する事ができました。

有難うございます。

2008/01/01 13:50:34

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • グループ化して集計してソート simple blog 2008-01-01 13:09:43
    http://q.hatena.ne.jp/1199118290とりあえず、下のような表で。mysql> select * from hoge; +--------+-----+-----+ | A | B | C | +--------+-----+-----+ | 木村 | 100 | 200 | | 山田 | 100 | 0 | | 伊藤 | 200 | 540 | | ...
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません