Конкат и затем группа в Улей - PullRequest
1 голос
/ 20 апреля 2020

У меня есть 3 столбца в таблице, как показано ниже:

|---------------------|------------------|-------------|
|      dept           |     class        |    item     |
|---------------------|------------------|-------------|
|          234        |         34       |      6783   |
|---------------------|------------------|-------------|
|          784        |         78       |      2346   |
|---------------------|------------------|-------------|

, пока я объединяю 3 столбца и создаю столбец как 'item_no' (значение 234-34-6783), он выдает ошибка при использовании нового столбца item_no в группе по функции - «Недопустимый псевдоним таблицы или ссылка на столбец» Может ли кто-нибудь помочь мне с этим?

select dept, class, item, concat(dept, '-', class, '-', item) as item_no, sum(sales)
from sales_table
group by dept, class, item, item_no;

Типы данных столбца smallint

1 Ответ

2 голосов
/ 20 апреля 2020

Вот два метода:

select concat(dept, '-', class, '-', item) as item_no, count(*)
from t
group by concat(dept, '-', class, '-', item) ;

Или:

select concat(dept, '-', class, '-', item) as item_no, count(*)
from t
group by dept, class, item ;

Тем не менее я думал, что Hive поддерживает псевдонимы в group by, поэтому это также должно работать:

select concat(dept, '-', class, '-', item) as item_no, count(*)
from t
group by item_no ;

Это не сработало бы, если бы item_no был столбцом в таблице. И позиционная запись также работает:

select concat(dept, '-', class, '-', item) as item_no, count(*)
from t
group by 1 ;
...