В каком отделе общее количество проектов не превышает 40% общего проекта - PullRequest
1 голос
/ 02 октября 2019

У меня есть таблица HR в базе данных улья с разными столбцами, два из них - Department и number_of_projects. Мне нужно найти запрос: «В каком отделе общее количество проектов превышает 10% от общего проекта»

Я написал следующий код:

SELECT department, 
       SUM(Number_Of_projects) as total_projects_dep 
  FROM Hr 
 GROUP BY department 
HAVING SUM(Number_Of_projects) > (SELECT CAST(0.1*SUM(Number_Of_projects)AS INT) FROM hr);

Улей выбрасывает следующиеошибка:

СБОЙ: ParseException строка 1: 126 не может распознать ввод вблизи 'SELECT' 'CAST' '(' в спецификации выражения

Тот же запрос, который я выполнил вmysql, работает нормально и дает правильный результат. В то время как hive не принимает больше, чем символ между запросами.

Может кто-нибудь подсказать мне, как изменить приведенный выше запрос для работы в кусте.

1 Ответ

1 голос
/ 02 октября 2019

Использование аналитических функций:

SELECT department, total_projects_dep 
FROM       
(
SELECT department, 
       SUM(Number_Of_projects) over(partition by department) as total_projects_dep, 
       SUM(Number_Of_projects) over()                        as total_projects
  FROM Hr
)s
WHERE total_projects_dep > CAST(0.1*total_projects AS INT)
GROUP BY department, total_projects_dep --this can be removed if there is only one record per department

;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...