7

私はテーブルを持っています

ID    |    NUMBER
------|----------
1     |      102
2     |      145
3     |      512
4     |      231
5     |       94

そして、すべての「NUMBER」を合計して、合計から各行に%値を返したいと思います。結果は次のようになります。

ID    |    NUMBER    |   PERC
------|--------------|-------
1     |      102     |   9.4
2     |      145     |  13.4
3     |      512     |  47.2
4     |      231     |  21.3
5     |       94     |   8.7

これまでのところ、私は次のようなものを持っています:

SELECT (number/sum(number)*100) AS perc
FROM mytable;

ただし、ご存知のとおり、その「数値」はGROUP BYまたは集計関数に表示される必要があるため、使用できません。どうやってするか?

4

1 に答える 1

21

sum次のover句を使用できます。

SELECT  100.0 * number / sum(number) over () as perc
FROM    mytable;

SQLフィドルでの例。

于 2012-10-25T11:00:46.380 に答える