Я новичок в SQL и пытался сделать перекрестную таблицу в Postgres. Я бы сделал это в Excel, но у меня есть база данных, содержащая около 3,5 миллионов строк, 20 000 различных значений кода, 7 категорий в cat и значения переменных от 1 до 100. В коде может быть только несколько из 7 категорий.
Excel не может обрабатывать количество строк, так что это SQL.
Мои данные в форме
code | cat | value |
--------------------------------
abc123 | 1 | 4 |
abc234 | 2 | 6 |
abc345 | 1 | 1 |
abc123 | 3 | 2 |
abc123 | 6 | 12 |
с кодом и котом в виде текста, значением в виде целого числа, хранящегося в таблице Postgres.
Я хотел бы выполнить кросс-таблицу по коду и кошке с суммой значений. Я бы хотел, чтобы в ответе отображался ноль вместо «нуль», но если бы «нуль» был бы более простым запросом, тогда это было бы хорошо.
Итак, результат, который я хотел бы,
code | 'cat=0' | 'cat=1' | 'cat=2' | 'cat=3' | 'cat=4' | 'cat=5' | 'cat=6'|
abc123 | 25 | 0 | 3 | 500 | 250 | 42 | 0 |
abc234 | 0 | 100 | 0 | 10 | 5 | 0 | 25 |
abc345 | 1000 | 0 | 0 | 0 | 0 | 0 | 0 |
Я искал файлы справки Postgres и другие форумы; самым близким был вопрос SO PostgreSQL Crosstab Query, но я не мог понять, как суммировать значения из третьего столбца.
Будем очень благодарны любой помощи.