需求如下
create table code_test(
id number,
code number,
node_name varchar(20)
);insert into code_test values(1,1,'3ss1');
insert into code_test values(2,2,'3ss1');
insert into code_test values(3,3,'3ss1');
insert into code_test values(4,4,'4ss1');
insert into code_test values(5,5,'4ss1');
insert into code_test values(6,6,'4ss1');
insert into code_test values(7,7,'3ss1');
insert into code_test values(8,8,'3ss1');
insert into code_test values(9,9,'3ss1');
insert into code_test values(10,10,'3ss1');
select * from code_test;
--sql
select min(code) || '-' || max(code) as code, min(node_name) as node_name
from (select code,
node_name,
(row_number() over(partition by node_name order by code)) dd,
code - row_number() over(partition by node_name order by code) as flag
from code_test order by code)
group by flag,node_name;
本文详细介绍了一种使用SQL进行数据分组与聚合的高级技巧,通过实例演示如何利用row_number()窗口函数和自定义标志字段(flag)来实现对特定字段(如code)的最小值和最大值的高效查询,并结合node_name字段进行分组,适用于大数据量场景下的快速统计汇总。

841

被折叠的 条评论
为什么被折叠?



