1、start with
star with 是一种用于层次结构查询的语法,它允许我们从指定的起始节点开始,递归查询与该节点相关联的所有子节点。
SELECT id, name, parent_id from test001
START WITH id = 1
CONNECT BY PRIOR id = parent_id
2、row_number() over partition by
select row_number() over(partition by A order by B ) as rowIndex from table
多用于对数据进行分组排序,并对每个组中的数据分别进行编号,编号从1开始递增,每个组内的编号不会重复。
row_number()、rank()、DENSE_RANK()都是分组排序函数,用于对数据分组排序,打上顺序、序次标号。
区别:
当排序字段组内有重复值时(对1、1、2正序排序),
ROW_NUMBER(),按照指定顺序正常排序,相同序次序次随机(可参考测试截图D列),两个7都可能排在第一位。 序次情况①1、2、3;②2、1、3;(多次运行可能出现随机排序情况,一般系统会内置其他排序方式,使排序固定)
rank()、DENSE_RANK()序次并列,两个1都排在第一位。
区别是rank()函数序次并列后的下一条数据会跳跃,序次为1、1、3;dense_rank()函数接着当前序次往下排,序次为1、1、2。