У меня есть postgresql db с таблицей t1, и я хочу рассчитать порог. порог должен быть, например, автомобиль 1 использует больше топлива, чем 75% всех автомобилей, car2 использует больше топлива, чем 50% всех автомобилей, .... математически я понимаю, что я хочу делать, но я не знаю, как построить запросPostgreSQL вычисляет пороговый запрос
id | name | value | threshold
________________________
1 | car1 | 30 | ...%
2 | car2 | 15 | ..%
3 | car3 | 7 |
4 | car4 | 5 |
вот SQL FIDDLE http://sqlfiddle.com/#!15/1e914/1
UPDATE t1
SET threshold =
select count(value)
from t1
где (значение> [над каждой строки]) и затем * 100/общее кол-()
извините за эту неудачную попытку, но я потерял. также попробовал некоторые совокупные функции.
Посмотрите на '100 * PERCENT_RANK() OVER (ORDER BY значения) или' 100 * CUME_DIST() OVER (ORDER BY значения) ' – dnoeth
@dnoeth Оба они не работают, так как решение по сравнению с самым экономичным автомобилем и не рассчитан по всему населению. – Patrick
@Patrick: Если эти функции не работают, ваш ответ также неверен. Оба являются лишь небольшими вариациями вашего 'RANK/COUNT' :-) – dnoeth