postgresql系列之窗口函數詳細介紹:
https://blog.csdn.net/qq_31156277/article/details/83957166
例:要根據每個組中行數的百分比檢索行,可以使用兩個窗口函數:一個用於計算行,另一個用於爲它們提供唯一編號。
SELECT gp,
val
FROM (
SELECT gp,
val,
COUNT(*) OVER (PARTITION BY gp) AS cnt,
ROW_NUMBER() OVER (PARTITION BY gp ORDER BY val DESC) AS rn
FROM temp
) t
WHERE rn / cnt <= 0.75;
例:
查找前50%的數據
類似: SELECT TOP 50 PERCENT * FROM temp_table
SELECT rn,
count
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY xxx_column) AS rn,
COUNT(*) OVER()
FROM temp_table
WHERE xxx_column2 = 'xxx') t
WHERE ROUND(rn::numeric/count::numeric,2) <= 0.5