如何用SQLite找到第N个百分位数?

Eri*_*Tan 14 sqlite percentile

我想找到第N 百分位数.

例如:table:htwt; 列:名称,性别,身高,体重

结果:

| gender | 90% height | 90% weight |
| male   |        190 |         90 |
| female |        180 |         80 |
Run Code Online (Sandbox Code Playgroud)

laa*_*lto 16

SQLite是不强的分析处理,但如果你的数据不是非常大,您可以尝试效仿与百分位ORDER BY,LIMIT 1和一个计算OFFSET.请注意,它OFFSET是从零开始的,因此您需要将其调整为1.

SELECT
  height AS 'male 90% height'
FROM table
WHERE gender='male'
ORDER BY height ASC
LIMIT 1
OFFSET (SELECT
         COUNT(*)
        FROM table
        WHERE gender='male') * 9 / 10 - 1;
Run Code Online (Sandbox Code Playgroud)


小智 10

我需要多个百分比(10, 20 ... 100%)并用以下方法解决:

WITH p AS (SELECT height, NTILE(10) OVER (ORDER BY height) AS percentile
           FROM table
           WHERE gender = 'male')
SELECT percentile, MAX(height) as height
FROM p
GROUP BY percentile;
Run Code Online (Sandbox Code Playgroud)

此解决方案需要 SQLite 3.28.0 或更高版本才能使用 NTILE 窗口函数。