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)