sql - 如何在SQL中的单元格内生成两个数字之间的数字范围
问题描述
我有一个表,其中一列duration
包含整数值,我正在尝试使用 sql 查询构建另一列,该列将包含一个介于 1 和duration
列中的值之间的整数列表。
例如:
duration | range
3 | [1, 2, 3]
3 | [1, 2, 3]
2 | [1, 2]
1 | [1]
...
我在 JS 中找到了一个潜在的解决方案。
create or replace function list_range(DURATION double)
returns VARCHAR
language javascript
strict
as 'return [...Array(DURATION).keys()];';
SELECT
t.*,
list_range(t.duration) as range
FROM table t
你觉得这个解决方案怎么样?可以优化吗?
解决方案
with temp as (
select distinct duration, level as l
from duration
connect by level <= duration)
select duration,
'['||listagg(l, ', ') within group(order by l)||']' as range
from temp
group by duration
order by 1 desc;
推荐阅读
- python - 导入错误:在导入熊猫时找不到 DLL 模块
- c++ - 异常“错误:预期';' 在 ndk-build 的顶级声明符之后
- api - Jmeter 中的 TCP/IP API
- node.js - 未使用用于 alpine linux 的预构建 node-sass
- python - 可视化复函数 z1^n + z2^n = 1
- android - 如何通过从另一个应用程序共享音频来共享音频
- c - Windows VS2017 上的 jemalloc 环境设置
- java - 是否有明确定义的默认端口号用作 Java RMI 注册表端口
- python - Python-Arduino USB 通信浮动错误
- php - 如何使用 pdo 删除多个表中的行