Искра SQL с делом и суммой - PullRequest
0 голосов
/ 07 марта 2020

У меня есть одна таблица улья, в которой у меня есть столбцы (id, dept, salary). Я применяю некоторые преобразования к этой таблице, используя spark SQL.

, т. Е. Если в отделе работает HR, то salary = salary +100, если отдел ИТ, то зарплата = оклад + 0 и основывается на том, что отдел берет сумму зарплат. PFB

Входные данные

+----+-----------+--------+
| id |   dept    | salary |
+----+-----------+--------+
|  1 | HR        |    100 |
|  2 | operation |    200 |
|  3 | tech      |    300 |
|  4 | IT        |    400 |
|  1 | HR        |    500 |
+----+-----------+--------+

Ожидаемый результат

+----+-----------+--------+
| id |   dept    | salary |
+----+-----------+--------+
|  1 | HR        |    800 |
|  2 | operation |    300 |
|  3 | tech      |    300 |
|  4 | IT        |    400 |
+----+-----------+--------+

Я написал код ниже, но он не работает в искре sql.

spark.sql("select CASE WHEN dept = 'HR' THEN 'sum(salary+100)',when  dept = 'IT' THEN 'sum(salary+0)' ELSE 'salary' END AS salary from emp group by dept").show

, но не совпадает ввод: проблема. Пожалуйста, помогите, как я должен реализовать это.

Ответы [ 2 ]

1 голос
/ 08 марта 2020

ожидаемый результат: искра sql запрос

spark.sql("Select id,dept, sum(salary) + sum(case dept when 'HR' then 100 when 'IT' then 0 when 'operation' then 100 else 0 end) as salary  From employee1 group by id,dept order by id asc").show()

output

Надеюсь, это поможет.

0 голосов
/ 07 марта 2020
Select Dept, sum(salary + case Dept when 'HR' then 100 when 'IT' then 0 else 0 end)
From emp
Group by Dept

Или

Select Dept, sum(salary) + sum(case Dept when 'HR' then 100 when 'IT' then 0 else 0 end)
From emp
Group by Dept
...