sqlite - SQLite ORDER:围绕中心分布结果
问题描述
是否可以以最高值位于中心并且较低值分布在中心直到结果集的开始和结束的方式来订购 SQLite 选择结果?
数据集:
5
3
2
1
1
1
1
期望的结果:
1
1
3
5
2
1
1
解决方案
使用ROW_NUMBER()
窗口函数为每个值分配一个行号,并使用MAX()
窗口函数获取每个值与表的最大值的差异,以便它们可以分布在最大值周围:
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
为列的名称。
请参阅演示。
推荐阅读
- flutter - builder 已弃用,不应使用 Flutter Provider
- python - Django 模型方法错误:缺少 1 个必需的位置参数:'self'
- rxjs - 仅当 observable 未完成时取消订阅
- javascript - 当值为 100% 时将类添加到 jquery-asProgress.js
- node.js - 请求nodejs获取不可读的数据
- php - Symfony\Component\Translation\TranslatorInterface::setLocale($locale) 的声明必须兼容
- ios - ld:未找到框架 DTXProfiler
- python - Selenium + Python 点击搜索选择但不点击
- debugging - 填写管理员凭据后 Blueprism 中的安装错误
- reactjs - 如何在不触发重新加载的情况下“替换” nextjs 中的路由?