У меня есть (тестовая) таблица:
zip | category | value
-------+----------+-------
17268 | 1 | 23
17268 | 2 | 10
17268 | 3 | 33
10011 | 1 | 22
10011 | 2 | 78
10011 | 3 | 45
Я хочу вывести другую таблицу, которая показывает по почтовому индексу процент от общих значений, составляющих значения категории 3.
Например, общее значение для почтового индекса 17268 равно 66. И для этой категории почтового индекса 3 значения равны 33. Поэтому я хочу присвоить 17268 значение коэффициента вывода .5 (для 33/66).
Iможет выполнить эту команду:
select zip, sum(distinct value) from ziptest group by zip;
Чтобы получить это преобразование:
zip | sum
-------+-----
10011 | 145
17268 | 66
Но теперь я хочу разделить эту сумму для каждого почтового индекса на значение значения категории 3 этого почтового индекса.
Кто-нибудь может посоветовать?
Я подозреваю, что ищу что-то вроде этого:
select zip, (select value from ziptest where category = 3)/sum(distinct value) from ziptest group by zip;
или это:
select zip, sum(distinct value), (value where category = 3) from ziptest group by zip;