在spark中,我们可以用pivot提供复杂的聚合。例如
project.groupBy("mgr","job").pivot("job").agg(sum(project.col("salary")).alias("ss") * count("*").alias("c"))
关于以下数据,即项目
经理DeptnosalaryJobac10100Clerkapac20200管理人员AC20300管理人员Kapac10400管理人员JPAC201000管理人员JPAC102000管理人员A2010000管理人员EA204000管理人员A2030000管理人员
输出:
MgrJobClerkmanageremanagerNull40000JPACManagerNull2000eMeaclerk800000NullJPAcclerk1000NullApacclerk2400NullApacManagerNull200
我可以在oracle数据库中使用pivot编写类似的sql查询吗?
2条答案
按热度按时间kulphzqa1#
以下是两个你需要的版本(希望两者都能帮助你):
查询#1
输出#1
查询#2:
输出#2:
输出#3:
输出#4:
ax6ht2ek2#
你的结果对我来说毫无意义。其中一个不是更有用吗?
这将为每个行创建一个单独的行
mgr
以及job
,但只有一份薪水。或:
每行有一行
mgr
在两个薪资列中填充薪资。这两个都是标准的sql(不像
pivot
)应该在任何数据库中运行。