首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL的Groupwise排序

使用SQL的Groupwise排序
EN

Stack Overflow用户
提问于 2019-01-04 23:21:22
回答 2查看 192关注 0票数 1

我需要对数据进行排序groupwise。据我所知,这不能用sort通过多个条件来实现,而且group也不是我所需要的,因为我不想减少记录,而是在保持组在一起的同时对它们进行排序。请看以下数据:

代码语言:javascript
复制
Group Data1 Data2 
a      1      5       
a      2      4       
a      3      7       
a      4      6       
b      1      9       
b      2      2       
b      3      1       
b      4     13       
c      1      8       
c      2     10       
c      3     13       
c      4     12      

我希望组保持在一起,然后按Data2 desc排序,然后按Data1 desc排序。为了保持它们在一起,在任何组的第一条记录之后,在同一组的其余记录之后,以相同的方式排序。想想看,组是按max Data2 desc,max Data1 desc而不是字母顺序排序的。

代码语言:javascript
复制
Group Data1 Data2
b      4     13  
b      1      9  
b      2      2  
b      3      1  
c      3     13  
c      4     12  
c      2     10  
c      1      8  
a      3      7  
a      4      6  
a      1      5  
a      2      4  

我能用SQL实现这一点吗?

在另一个环境中,我可以定义一个计算器,然后简单地按组、Data2、Data1排序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-05 04:25:50

ORDER BY子句中使用分析函数:

代码语言:javascript
复制
select *
from mytable
order by
  max(data2) over (partition by "Group") desc,
  max(data1) over (partition by "Group") desc,
  "Group",
  data2 desc,
  data1 desc;
票数 4
EN

Stack Overflow用户

发布于 2019-01-05 04:01:48

试试这个:

代码语言:javascript
复制
with a (Group, Data1, Data2 ) as (values
  ('a', 1, 5)       
, ('a', 2, 4)       
, ('a', 3, 7)       
, ('a', 4, 6)       
, ('b', 1, 9)       
, ('b', 2, 2)       
, ('b', 3, 1)       
, ('b', 4, 13)       
, ('c', 1, 8)       
, ('c', 2, 10)       
, ('c', 3, 13)       
, ('c', 4, 12)      
)
select a.*
from (
select b.*, rownumber() over(order by data2 desc, data1 desc) rn2
from (
select a.*, rownumber() over (partition by group order by data2 desc, data1 desc) rn1
from a
) b
where rn1=1
) b 
join a on a.group=b.group
order by b.rn2, a.data2 desc, a.data1 desc;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54041723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档