2016-08-26 9 views
0

Я ищу способ сделать столбец «общая сумма» через ВСЕ группы в Импале.общая колонка в Impala используя функцию окна

Это простое в использовании оконных функций для получения общей сложности секционированных групп, как это:

суммы (х) над (разделом на А)

однако это не кажется, что есть выражение для разбиения на 'все'. Это недостаток в Импале? Похоже, что в postgress вы можете оставить лишний оператор пустым.

ответ

0

Предложение раздела необязательно. Вы можете написать запрос следующим образом:

select sum(x) over() from t; 

Например:

[localhost:21000] > select id, sum(id) over() from tbl; 
+----+-------------------+ 
| id | sum(id) OVER(...) | 
+----+-------------------+ 
| 0 | 28    | 
| 1 | 28    | 
| 2 | 28    | 
| 3 | 28    | 
| 6 | 28    | 
| 7 | 28    | 
| 4 | 28    | 
| 5 | 28    | 
+----+-------------------+ 
Fetched 8 row(s) in 0.08s 
+0

по некоторым причинам я не могу это сделать. Я получаю: errorMessage: AnalysisException: выбрать выражение списка, не созданное выводом агрегации (отсутствует в предложении GROUP BY?): Sum (X) OVER() Проблема не в общем запросе предложения GROUP BY (это очень просто , группировка по одному столбцу). Я могу использовать аналитическую функцию, если я включаю раздел по выражению. – Jonathan

+0

Что-то еще не так с вашим запросом. Можете ли вы разместить больше запроса? – Matt

+0

ВЫБОР a.app , сумма (a.rev) как 'rev_by группы' , сумма (a.rev) по сравнению с() как '' общей из rev_table в группы по a.app результатов в: Выбирать выражение списка, не созданное выводом агрегации (отсутствует в предложении GROUP BY?): sum (a.rev) OVER() Я не понимаю, что только один неагрегированный столбец уже включен в предложение GROUP BY. Не знаю, как это интерпретировать. спасибо за помощь btw – Jonathan