当前位置: 首页 > 科技观察

数据分析师应该在多大程度上学习SQL技能?

时间:2023-03-16 17:14:17 科技观察

本文转载自微信公众号《关于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()Over([][[]])Over::Over([][][])::在窗口中窗口ROWS|RANGEBETWEENUNBOUNDEDPRECDEDING|PRECEDING|FOLLOWING|CURRENTROWANDUNBOUNDEDFOLLOWING|PRECEDING|FOLLOWING|CURRENTROW举一个例子:selectcustid,ordermonth,ordervolume,sum(ordervolume)over(partitionbycustidorderbyordermonthascrowsbetweenunboundedprecedingandcurrentrow)ascumulatedVolumefromFctSales统计了截止到目前为止每天的累计总数。3-Offset函数:定位记录3.1Lead()3.2LAG()3.3First_Value()3.4Last_Value()3.5Nth_Value()这个类比较好理解。根据当前记录,得到前后N条数据。4-DistributionFunction:分布函数4.1-PERCENT_RANK()4.2-CUME_DIST()4.3-PERCENT_COUNT()-4.4-PERCENT_DISC()目前还没有使用过这样的应用。适用于会计统计。