当前位置: 首页 > 知识库问答 >
问题:

如何计算hive中的累计工资

阎志义
2023-03-14

由于hive只支持从类集中的子查询,如select*from(subquery),也只支持equjo,因此我们如何从表中计算累积工资,如表员工有记录如下。

id     name       salary
e001  manish      10000
e002  amit         40000
e003  santosh     45000
e004  rohit       30000

因此输出应该如下所示

id       name           salary        cumsalary
e001     manish         10000          10000
e002     amit           40000          50000
e003     santosh        45000          95000
e004     rohit           30000         125000

我怎么能在蜂巢里做到这一点

共有2个答案

上官高逸
2023-03-14

使用关联子查询查找累积总和

 create table #temp(id varchar(10),    name  varchar(50),     salary int)
 insert #temp values 
('e001',  'manish',      10000),
('e002',  'amit   ',      40000),
('e003',  'santosh ',    45000),
('e004',  'rohit  ',     30000)

SELECT *,
       (SELECT Sum(salary)
        FROM   #temp t2
        WHERE  t2.id <= t.id) As cumsalary
FROM   #temp t 
淳于新
2023-03-14

Hive支持< code>sum()分析函数,因此您应该能够执行以下操作:

select t1.* ,
sum(salary) over (order by id) cumsalary
from table t1

有关Hive分析函数的更多信息,请参阅https://cwiki.apache.org/confluence/display/Hive/LanguageManualWindowingAndAnalytics

 类似资料:
  • 我想知道如何计算的累计总和在AnyLogic中。具体地说,我有一个循环事件,每周改变一个参数的值。从这个参数我想计算它收到的值的累计总和,我怎么做呢? 该事件是循环模式的超时。操作是: "name_parameter"=圆形(max(正常(10,200),0));

  • 我有一个rdd(String,Int),它是按键排序的 现在,我想用零开始第一个键的值,并将后续键作为前一个键的和。 例如:c1=0,c2=c1的值,c3=(c1值c2值),c4=(c1..c3值)预期输出: 有可能做到这一点吗?我用地图试过了,但总和没有保存在地图里。

  • 问题内容: 我正在和熊猫一起工作,但是我没有太多经验。我有以下DataFrame: 而且我需要计算前11行的累积总和。如果先前的数量少于11,则将剩余的数量假定为0。 我试过了: 但是,这并没有实现我想要的,但是这正在旋转累积总和的结果。我该如何实现? 问题答案: 呼叫与和和:

  • 问题内容: 假设我有一个Java IntStream,是否可以将其转换为具有累积总和的IntStream?例如,以[4、2、6,…]开头的流应转换为[4、6、12,…]。 更笼统地说,应该如何实施有状态流操作?感觉这应该可行: 有一个明显的限制,即它仅适用于顺序流。但是,Stream.map明确需要无状态映射函数。我是否错过了Stream.statefulMap或Stream.cumulative

  • 所以我有3个包,实现,接口和测试。我想把这个功能写进员工的小程序,这样我的单元测试在Test员工的小程序上运行时就不会出错。但是,我不确定如何编写get雇员计数,因为它在单元测试中失败。我试图通过创建int计数来解决它,但它不起作用。我知道我需要使用数组列表来计算员工的数量,但是我不能想出一个解决方案,我也找不到任何像我的单元测试一样的代码示例。如果有人能帮忙,将不胜感激。

  • 问题内容: 上面的选择向我返回了以下内容。 我如何获得以下信息: 问题答案: SQL Fiddle示例 输出 编辑:这是一个通用的解决方案,将可在大多数数据库平台上使用。如果您的特定平台(例如gareth的)有更好的解决方案,请使用它!