【问题标题】:In which department total no of project is greater than 40% of overall project哪个部门的项目总数大于总项目的40%
【发布时间】:2019-10-03 03:20:40
【问题描述】:

我在 hive 数据库中有一个 HR 表,其中包含不同的列,其中两个是部门和 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);

hive 抛出以下错误:

失败:ParseException 行 1:126 无法识别“SELECT”附近的输入 'CAST' '(' 在表达式规范中

我在 mysql 中执行的相同查询,它工作正常并给出正确的结果。而 hive 不接受查询之间的大于符号。

有人可以指导我如何更改上述查询以在 hive 中工作。

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

    使用分析功能:

    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
    

    ;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 2020-04-21
      相关资源
      最近更新 更多