ROW_NUMBER() OVER函数的基本用法
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
简单的说row_number()从1开始,为每一条分组记录返回一个数字,
用法1:
ROW_NUMBER() OVER (ORDER BY birth DESC)
先按birth列降序排序,再为降序以后的每条记录返回一个序号。
用法2:
row_number() OVER (PARTITION BY COL1 ORDER BY COL2 ASC)
表示根据COL1分组,在分组内部根据 COL2升序排序,而此函数计算的值就表示每组内部排序后(记录)的顺序编号(组内连续的唯一的)
例如:
SELECT
row_number() over (order by CT.TRANSACTIONNUM asc) as row_number,
CT.BEG_DATE,---日期
CT.SECURITYID,---交易品种
CT.LATEST_CLEANPRICE,--最新利率(%)
CT.WEIGHTED_CLEANPRICE,--加权平均利率%
CT.WEIGHTED_YIELD_IR,-- 加权平均利率(利率债)%
ROUND(CT.TURNOVER/100000000,4) as TURNOVER, --成交量(亿)
CT.TRANSACTIONNUM, --- 成交笔数
CT.Updatetime,
CT.MDSUBTYPE
FROM TTRD_CMDS_CR_SERIES CT; SELECT
-- row_number() over (partition by CT.BEG_DATE,CT.SECURITYID order by CT.Updatetime desc) as rank,
CT.BEG_DATE,---日期
CT.SECURITYID,---交易品种
CT.LATEST_CLEANPRICE,--最新利率(%)
CT.WEIGHTED_CLEANPRICE,--加权平均利率%
CT.WEIGHTED_YIELD_IR,-- 加权平均利率(利率债)%
ROUND(CT.TURNOVER/100000000,4) as TURNOVER, --成交量(亿)
CT.TRANSACTIONNUM, --- 成交笔数
CT.Updatetime,
CT.MDSUBTYPE
FROM TTRD_CMDS_CR_SERIES CT;