2016-05-08 15 views
0

Ich habe eine Tabelle T1 mit einem 250x250m Raster mit Bevölkerung und ich möchte das Perzentil für jeden Staat berechnen. Ich habe bereits die state_id für jede Zelle (st_contains). Jetzt möchte ich das Perzentil für jeden Staat berechnen.PostgreSQL GROUP BY Berechnung Perzentil

Lösung, fügt PARTITION;)

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

Antwort

1

Ohne Tabellendefinition und einige Beispieldaten und erwartete Ausgabe ist es schwer, die beste Lösung wäre, zu träumen, was aber das wird wahrscheinlich es tun:

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

Dies berechnet das Perzentil über alle Zustände, aber ich möchte es für jeden Zustand berechnen. – fabvys