【发布时间】:2019-04-27 06:37:03
【问题描述】:
我想以特定方式对表中的值进行排序。
我有一个包含以下数据的源表(TestTable)
groupId,Name,subjectCode,PA
1,LEADER,T,67
1,Prem,P,67
1,Prem,T,89
1,Anjali,T,124
1,LEADER,P,234
1,Anjali,P,234
1,Anjali,NP,45
1,Prem,NP,23
1,LEADER,NP,123
我对新表 TestSort 的预期结果是
1,LEADER,NP,123
1,LEADER,P,234
1,LEADER,T,67
1,Anjali,NP,45
1,Anjali,P,234
1,Anjali,T,124
1,Prem,NP,23
1,Prem,P,67
1,Prem,T,89
我需要在 asc 中订购第一三列,并且我必须将领导者记录放在它自己的顶部。
我尝试做同样的事情,但我没有得到预期的结果
插入覆盖表TestSort select * from TestTable order by groupId asc,Name asc,subjectCode asc;
我得到的结果是
groupId,Name,subjectCode,PA
1,LEADER,T,67
1,LEADER,NP,123
1,Anjali,NP,45
1,Anjali,P,234
1,LEADER,P,234
1,Anjali,T,124
1,Prem,T,89
1,Prem,NP,23
1,Prem,P,67
我是不是在某处做错了什么。
轨迹 1
insert overwrite table TestSort select * from TestTable
order by
case when name = 'LEADER' then '0' else '1' end,
groupid,
name,
subjectcode;;
select * from TestSort;
上述查询的结果是
groupId,Name,subjectCode,PA
1,Anjali,NP,45
1,LEADER,T,67
1,Prem,T,89
1,Prem,P,67
1,LEADER,NP,123
1,Prem,NP,23
1,Anjali,T,124
1,Anjali,P,234
1,LEADER,P,234
我的期望是将值插入新表 TestSort。选择查询给了我预期的结果,但是一旦我将值插入到 TestSort 中,顺序就会改变。
【问题讨论】:
-
Select without order by 返回未按定义排序的数据集。阅读:stackoverflow.com/a/54542826/2700344,这也是:stackoverflow.com/a/47416027/2700344
标签: sql hive sql-order-by