PostgreSQL GROUP BY计算百分位数

时间:2016-05-08 12:49:34

标签: postgresql loops group-by aggregate-functions

我有一个表格t1,其中250x250m网格有人口,我想计算每个州的百分位数。我已经拥有每个单元格的state_id(st_contains)。 现在我想计算每个州的百分位数。

解决方案,添加PARTITION;)

   SELECT  *,
   ntile(100) OVER(PARTITION BY state_id ORDER BY pop) as percentile
   FROM t1

1 个答案:

答案 0 :(得分:1)

如果没有表格定义和一些样本数据以及预期的输出,很难想象最好的解决方案是什么,但这可能会这样做:

WITH x AS
  (
   SELECT  *,
   ntile(100) OVER (PARTITION BY state_id ORDER BY pop) as percentile
   FROM t1
  )
UPDATE t1
SET state_percentile = percentile
FROM x
WHERE t1.id = x.id;