复杂的'顺序'或者排序问题

say*_*aha 3 sql oracle sql-order-by

我有一张看起来像这样的桌子

Group  Recipe    Priority
0       A         400
0       A         200
0       B         500
0       B         100
1       C         300
1       C         300
1       D         600
Run Code Online (Sandbox Code Playgroud)

重要性是"群组">"优先级">"食谱"

第0组必须先行.在第0组中,优先级500必须先行(因为它具有更高的优先级),但为了提高效率,所有配方必须先行.

排序后,它应该是这样的

Group  Recipe    Priority
0       B         500
0       B         100
0       A         400
0       A         200
1       D         600
1       C         300
1       C         300
Run Code Online (Sandbox Code Playgroud)

我已经尝试了所有不同的方式来做'顺序',但找不到正确的方法.

感谢您的帮助

Gor*_*off 12

问题很微妙.您不希望按优先级排序,而是按给定组/配方组合的最大优先级排序.也就是说,您希望根据此最高优先级将所有配方保留在一起.

以下是这样的:

select t.Group, t.Recipe, t.Priority,
       max(priority) over (partition by t.group, t.recipe) as maxpriority
from tablename t
order by t.Group asc, 4 desc, t.Recipe, priority desc
Run Code Online (Sandbox Code Playgroud)