Итак, у меня есть таблица с тремя важными столбцами: местоположение магазина, клиент и количество покупок. Что-то наподобие:Подсчитывает, сколько раз каждое значение происходит в таблице PostgreSQL?
Что я хотел бы сделать, это получить количество каждого количества покупок. То есть, подсчитывайте количество покупок, сделанных клиентом 1, 2 покупки, 3 покупки, 4 покупки и т. Д., Как гистограмма, сгруппированная по магазинам.
Store | 1 Purchase | 2 Purchases | 3 Purchases...
A 1 3 2
B 2 1 4
C 1 6 8
D 4 4 2
Есть ли умный способ сделать это без ручного выяснения того, что максимальное количество покупок является и создания разветвленного подсчета для подсчета каждый из них? Так что я уже
SELECT Store,
Count(CASE number_of_purchases when 1 then 1 else null end) as 1_purchase,
Count(CASE number_of_purchases when 2 then 1 else null end) as 2_purchase,
Count(CASE number_of_purchases when 3 then 1 else null end) as 3_purchase...
FROM table
GROUP BY Store;
Но, так как максимальное число может меняться с течением времени, я хотел бы запрос, чтобы вычислить его автоматически и принимать это во внимание. Любая помощь будет оценена!
Исправлено это, спасибо за наконечник. – user2900369
Что вы ищете, это запрос «pivot» или «crosstab». Проверьте функцию 'crosstab' в расширении' tablefunc': http://www.postgresql.org/docs/current/static/tablefunc.html. –