SQL - Impala - Как развернуть один категориальный столбец во многие? - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть следующая таблица:

user      category    number
1         A           8
1         B           6
2         A           1
2         C           9
3         B           5

Я хочу "развернуть" или "оцифровать" столбец категории и заполнить их столбцом "число", чтобы получить:

user      cat_A    cat_B    cat_C
1         8        6        0
2         1        0        9
3         0        5        0

Можно ли добиться этого в SQL (Impala)?

Я нашел этот вопрос Как создать фиктивные переменные столбцы для тысяч категорий в Google BigQuery?

Однако это кажется немного сложным, и я бы предпочел сделать это в Pandas.

Есть ли более простое решение, зная, что у меня есть 10 категорий (A, B, C, D и т. Д.)

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете попробовать использовать функцию агрегирования условий.

SELECT user,
        SUM(CASE WHEN category = 'A' THEN number ELSE 0 END) cat_A,  
        SUM(CASE WHEN category = 'B' THEN number ELSE 0 END) cat_B,  
        SUM(CASE WHEN category = 'C' THEN number ELSE 0 END) cat_C     
FROM T 
GROUP BY user      
...