2016-05-08 2 views
0

У меня есть таблица t1 с сеткой 250x250m с населением, и я хочу рассчитать процентиль для каждого состояния. У меня уже есть state_id для каждой ячейки (st_contains). Теперь я хочу рассчитать процентиль для каждого состояния.PostgreSQL GROUP BY вычисляет процентиль

раствор, добавить PARTITION;)

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

ответ

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; 
+0

это вычисляет процентиль по всем состояниям, но я хочу рассчитать его для каждого состояния. – fabvys

Смежные вопросы