SCORE列があります。EMPLOYEEテーブルから上位10%を上位スコアで選択するにはどうすればよいですか?
1 に答える
1
分析でそれを行うことができます。スコアが昇順であると仮定します (スコアが高いほど優れています)。
SELECT e.*
FROM (SELECT e.*,
row_number() OVER (ORDER BY score DESC)
/ COUNT(*) OVER () pct
FROM employee e) e
WHERE pct <= 0.1
これにより、従業員の最大 10% が選択されます。それらの間で等しいスコアがある場合、上記の SQL は非決定論的な方法でそれらの中から選択します。重複したスコアを含めて上位 10% にあるものをすべて含めたい場合は、 に置き換えrow_number()
ますrank()
。
NTILE
次の関数を使用することもできます。
SELECT e.*
FROM (SELECT e.*,
ntile(10) OVER (order by score DESC) ntile#
FROM employee e) e
WHERE ntile# = 1
于 2012-11-30T14:53:27.580 に答える