Создание сводной таблицы с PostgreSQL

Предположим, что у меня есть таблица в Postgres, называемая listings, которая выглядит так:

id    neighborhood    bedrooms    price
1     downtown        0           256888
2     downtown        1           334000
3     riverview       1           505000
etc.

Как написать запрос кросс-таблицы, который показывает среднюю цену за спальню как столбцы и кварталы как строки?

Результат запроса должен выглядеть примерно так (цифры составлены, столбцы - это спальни):

            0       1       2       3
riverton    250000  300000  350000  -
downtown    189000  325000  -       450000

Ответ 1

Сначала вычислите среднее значение с помощью агрегатной функции avg():

SELECT neighborhood, bedrooms, avg(price)
FROM   listings
GROUP  BY 1,2
ORDER  BY 1,2

Затем подайте результат в функцию crosstab(), как это подробно описано в этом связанном ответе: