Я хочу разделить категориальное значение на разные поля в sql - PullRequest
1 голос
/ 26 мая 2020

Данные выглядят так - Штат, район, категория (всего два поля - ОЧИСТИТЬ и ПОДОЗРИТЬ). Я хочу получить данные в формате (Таблица-2)

Таблица-1

State,DC,     cat2
ASSAM KAMRUP CLEAR
ASSAM KAMRUP CLEAR
ASSAM KAMRUP SUSPECT
ASSAM KAMRUP CLEAR
ASSAM Cachar CLEAR
ASSAM Cachar CLEAR
BIHAR Buxar  SUSPECT
BIHAR Buxar  CLEAR
BIHAR Buxar  CLEAR
BIHAR Buxar  SUSPECT
BIHAR Buxar  CLEAR
BIHAR Buxar  SUSPECT
BIHAR Buxar  CLEAR

Я хочу что-то вроде этого - Таблица-2

State DC     CLEAR        SUSPECT
ASSAM KAMRUP count(CLEAR) count(SUSPECT)
ASSAM Cachar count(CLEAR) count(SUSPECT)
BIHAR BUXAR  count(CLEAR) count(SUSPECT)

Ответы [ 2 ]

3 голосов
/ 26 мая 2020

В Postgres для этого можно использовать отфильтрованную агрегацию:

select state, dc, 
       count(*) filter (where cat2 = 'CLEAR') as clear, 
       count(*) filter (where cat2 = 'SUSPECT') as suspect
from the_table
group by state, dc;
1 голос
/ 26 мая 2020

Вы также можете использовать sum с оператором case

select
  state,
  DC,
  sum(case when cat2 = 'CLEAR' then 1 else 0 end) as clear,
  sum(case when cat2 = 'SUSPECT' then 1 else 0 end) as suspect
from yourTable
group by 
  state,
  DC 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...