SQLite ORDER:围绕中心分布结果
SQLite ORDER: Distribute result around center
是否可以按照最高值位于中心而较低值分布在中心周围直到结果集开始和结束的方式来排序 SQLite select 结果?
数据集:
5
3
2
1
1
1
1
期望的结果:
1
1
3
5
2
1
1
使用ROW_NUMBER()
window函数为每个值分配一个行号,并使用MAX()
window函数获取每个值与最大值的差值table 所以它们可以分布在最大值附近:
SELECT *
FROM tablename
ORDER BY CASE WHEN ROW_NUMBER() OVER (ORDER BY col) % 2 = 1 THEN -1 ELSE 1 END *
(MAX(col) OVER () - col)
将 col
更改为列的名称。
见 demo.
是否可以按照最高值位于中心而较低值分布在中心周围直到结果集开始和结束的方式来排序 SQLite select 结果?
数据集:
5
3
2
1
1
1
1
期望的结果:
1
1
3
5
2
1
1
使用ROW_NUMBER()
window函数为每个值分配一个行号,并使用MAX()
window函数获取每个值与最大值的差值table 所以它们可以分布在最大值附近:
SELECT *
FROM tablename
ORDER BY CASE WHEN ROW_NUMBER() OVER (ORDER BY col) % 2 = 1 THEN -1 ELSE 1 END *
(MAX(col) OVER () - col)
将 col
更改为列的名称。
见 demo.