PostgreSQL 按两列排序,最后可以为空

尤里·马特维尤克

我有桌子:

ID 日期 奖金
1 2022-03-10 16:11:06.445559 6000
2 2022-03-15 16:11:06.445559 4000
3 2022-03-20 16:11:06.445559 空值
4 2022-03-25 16:11:06.445559 7000
5 2022-03-30 16:11:06.445559 空值

我需要使用 PostgreSQL 语法按日期和奖励列对行进行排序。首先应该是具有不可空奖金的最新(按日期排序)行。然后应该是按日期排序的具有可空奖金的行(也是最新的)结果应该是下一个:

ID 日期 奖金
4 2022-03-25 16:11:06.445559 7000
2 2022-03-15 16:11:06.445559 4000
1 2022-03-10 16:11:06.445559 6000
5 2022-03-30 16:11:06.445559 空值
3 2022-03-20 16:11:06.445559 空值
巴巴罗斯·奥詹

您可以使用条件 for bonuswhile 它具有较高的优先级,然后按date较低的优先级降序排序,例如

ORDER BY CASE WHEN bonus IS NULL THEN 1 ELSE 0 END, date DESC

Demo

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章