本文转载自微信公众号《关于SQL》,作者Lenis。转载本文,有关SQL公众号请联系。经常有朋友问,数据分析师应该把SQL技能学到什么程度。今天我们来谈谈T-SQL中的WindowFunction。窗口函数包含4个类别。它们是:1-RankFunction2-AggregateFunction3-OffsetFunction4-DistributionFunction.1-RankFunction通常最多使用1.1Rank()Over()1.2Row_Number()Over()1.3Dense_Rank()Over()1.4NTILE(N)Over()这四个函数,有两点需要注意:a.Rank()Over()和Row_Number()Over():两者唯一的区别是Row_Number()Over()实际达到相同条件的两条或多条记录通过唯一值b区分。Rank()Over()和Dense_Rank()Over():两者的区别是在同一个rank之后进行排序,是同rank之后的连续数(Rank)还是N隔开的连续数(Dense_Rank)相同的记录。所以Rank的结果都是连续的数字,Dense_Rank的结果可能有跳数。C。除了用法上的区别,顺便说一下分页的实现:首先,我们通常使用Row_Number()加Top(N)来实现:selecttop(100)*from(selectOrderId,OrderMonth,OrderAmount,Row_Number()Over(OrderByOrderAmountDESC)ASAmt_OrderfromFctSales)tmpWhereAmt_Orderbetween2000and3000第二种,SQLServer2012之后的新函数:SelectOrderId,OrderMonth,OrderAmountFromFctSalesOrderbyOrderAmountDescOffSet2000ROWSFetchNext100ROWSOnly按照数量的第0条第0条记录的大小倒序排序。2-聚合函数。聚合数据2.1-Sum()Over()2.2-Count()Over()2.3-AVG()Over()2.4-MIN()Over()2.5-MAX()Over()使用聚合函数时,唯一要注意的是Order子句。function_name(
