判断是否聚合 GROUP BY 列表中的指定列表达式。 在结果集中,如果 GROUPING 返回 1 则表示聚合;返回 0 则表示不聚合。
SELECT SalesQuota, SUM(SalesYTD) ‘TotalSalesYTD’, GROUPING(SalesQuota) AS ‘Grouping’ FROM Sales.SalesPerson GROUP BY SalesQuota WITH ROLLUP;–with rollup返回总计行,grouping可以识别该行,返回1。
5.分析函数
函数
说明
举例
lead(columnname,offset,default) over(partition by …order by …)
取出同一字段的后N行(offset偏移量)的数据
select lead(name,1) over(partition by id order by createdate)
lag(columnname,offset,default) over(partition by …order by …)
取出同一字段的前N行(offset偏移量)的数据
select lag(name,1) over(partition by id order by createdate)
row_number() over(partition by …order by …)
给当前行数据排编号(即编号都是唯一的)
select row_number() over(partition by id order by createdate desc) from a表
rank() over(partion by …order by …)
给当前行数据排名(跳跃排名),如a=b>c,则a排名为1,b排名为1,c排名为3
select rank() over(partition by id order by createdate desc)from a表
dense_rank() over(partion by …order by …)
给当前行数据排名(密集排名,即非跳跃排名),如a=b>c,则a排名为1,b排名为1,c排名为2
select dense_rank() over(partition by id order by createdate desc)from a表