SQL将新行排名更高,但最多每4行一次,否则使用默认顺序



这个问题看起来很简单,但在处理了RANK、Partition等之后,我一直无法找到可行的解决方案。

我们有一个简单的拍卖项目表,每个都有一个搜索分数。我们希望对新列出的拍卖项目进行提升,并每4个结果显示一次,即使它们的搜索分数较低。新列出的项目本身根据搜索得分进行排名(要意识到,如果新列出的项的搜索得分很高,它可能会被稍微降级(。

拍卖品样本数据:

搜索得分false错误//tr>错误错误falsefalse//tr>true[/tr>错误
id 名称 is_new
300 苹果iPad200
3 三星s8190
12 另一项181
412 ps4 true 10
33 又是一个177
201 手表
112 iphone x169
450 电子游戏6
12 拍卖项目165

我认为你可以使用算术技巧。我认为这样做:

order by (case when is_new = 'false'
then row_number() over (partition by is_new order by score desc) * 1.0
else row_number() over (partition by is_new order by is_new score desc) * 3 + 0.5
end)

这将每隔四行插入一次is_new = 'true'记录。

相关内容

最新更新