ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.2508765 データの和計算
質問者:the-ai 以下を実現するSQL文教えてください。

テーブル名:i_num
id | number
^^^^^^^^^^^^
a | 5
b | 4
c | 2
d | 6
e | 9

上記の表で、0に近い値から足し算を行い、全体の50%を超えたときのnumberを取り出したいです。
c+b+a+d+e / 全体 が50%を超えた時のnumberは、ここでは、d=6を取り出したいです。

よろしくお願い致します。
困り度:
  • すぐに回答を!
質問投稿日時:
06/10/31 11:51
この質問に対する回答は締め切られました。

回答

ANo.3 #1、#2回答者です。

#2の回答は質問内容と合っていませんでした。
無視してください。
回答者:chukenkenkou
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
06/10/31 20:40
この回答へのお礼一時テーブルなどを用いてできました。
ありがとうございました。

回答

ANo.2 #1回答者です。

質問のケースに限っては、以下のSQLで実現可能だと思います。

select id,number
from i_num
where number>(select sum(number)/count(*) from i_num)
order by number
limit 1;

こういった処理はSQLで無理やりやるより、ストアドプロシジャやアプリケーシュンでやった方が、性能が出たり処理も簡単にできる場合が多いです。
回答者:chukenkenkou
種類:回答
どんな人:経験者
自信:自信あり
回答日時:
06/10/31 20:38
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答良回答10pt

ANo.1 >0に近い値から足し算を行い

SQLではそういう制御はできないので、PL/pgSQL等を使用してください。
回答者:chukenkenkou
種類:アドバイス
どんな人:経験者
自信:自信あり
回答日時:
06/10/31 20:17
この回答へのお礼この回答にお礼をつける(質問者のみ)