如何在HiveSQL中按一列中的数据排序并将其分发到另一列中?

如何在HiveSQL中按一列中的数据排序并将其分发到另一列中?,sql,apache-spark-sql,hiveql,Sql,Apache Spark Sql,Hiveql,我有以下数据: 公司ID 部门 人数 国家 45390 人力资源 100 英国 45390 服务 250 英国 98712 服务 300 美国 39284 管理 142 挪威 85932 管理 260 德国 您正在生成的结果集实际上不是关系结果集。为什么?因为行取决于“上一行”中的内容。在关系数据库中,没有“上一行”这样的东西。这种类型的处理通常在应用程序层处理 当然,SQL可以做您想做的事情。你只需要小心: select (case when 1 = row_number() over (pa

我有以下数据:

公司ID 部门 人数 国家 45390 人力资源 100 英国 45390 服务 250 英国 98712 服务 300 美国 39284 管理 142 挪威 85932 管理 260 德国
您正在生成的结果集实际上不是关系结果集。为什么?因为行取决于“上一行”中的内容。在关系数据库中,没有“上一行”这样的东西。这种类型的处理通常在应用程序层处理

当然,SQL可以做您想做的事情。你只需要小心:

select (case when 1 = row_number() over (partition by Department order by Country) 
             then Department
        end) as Department,
       Country, count(*) as num_people,         
from dataset
group by Country,Department
order by Department, Country;
请注意,
orderby
需要匹配window function子句,以确保被认为是第一行的
row\u number()
实际上是结果集中的第一行