题解 | 计算每日累计利润
计算每日累计利润
https://www.nowcoder.com/practice/c9b7a2f73eb54a3da4a81f15fd8a3665
select profit_id ,profit_date ,profit ,sum(profit) over (order by profit_date) as cumulative_profit from daily_profits order by profit_date;
1)窗口函数
SELECT
<列>,
窗口函数() OVER (
[PARTITION BY <分区列>]
[ORDER BY <排序列> [ASC|DESC]]
[窗口框架]
) AS 别名
FROM <表>
2)
一、聚合类窗口函数
SUM(), AVG(), MIN(), MAX(), COUNT()
二、排名类窗口函数
ROW_NUMBER() | 行号(相同值不同号) | 1,2,3,4 |
RANK() | 排名(相同值并列但留空) | 1,2,2,4 |
DENSE_RANK() | 密集排名(相同值并列无空) | 1,2,2,3 |
NTILE(n) | 将数据分成n个桶 | 1,1,2,2,3 |
三、偏移分析类窗口函数
sql复制LAG(column, n) -- 访问前n行值 LEAD(column, n) -- 访问后n行值 FIRST_VALUE(column) -- 窗口第一行 LAST_VALUE(column) -- 窗口最后一行
四、统计类窗口函数
sql复制PERCENT_RANK() -- 排名百分比 (0-1) CUME_DIST() -- 累计分布 (0-1) STDDEV(), VAR() -- 标准差和方差