oracle中lag()over()的用途
时间: 2023-10-22 17:06:31 浏览: 149
ORACLE中OVER函数的用法.doc
在Oracle中,LAG() OVER()函数用于在查询结果集中计算前一行的值。该函数可以用于比较当前行与前一行的值,从而实现一些复杂的计算和分析。例如,可以使用该函数计算某个产品在过去几个月的销售额同比增长率,或者计算某个股票在过去几天的收盘价涨跌幅等。
具体来说,LAG()函数接受两个参数,第一个参数是要计算的列名,第二个参数是指定向上偏移的行数。例如,LAG(Sales, 1)表示计算前一行的Sales值。OVER()函数用于指定计算窗口,可以按照某个字段分组计算,也可以计算整个结果集。
以下是一个使用LAG() OVER()函数计算同比增长率的示例:
```
SELECT Product, Month, Sales,
LAG(Sales, 12) OVER(PARTITION BY Product ORDER BY Month) AS LastYearSales,
Sales / LAG(Sales, 12) OVER(PARTITION BY Product ORDER BY Month) - 1 AS YoYSalesGrowth
FROM SalesTable
```
以上查询将计算每个产品在过去一年中每个月的销售额,然后计算同比增长率。LAG()函数中指定了偏移量12,表示计算前一年同一月的销售额。OVER()函数中使用了PARTITION BY子句,表示按照产品分组计算。计算结果将包括产品、月份、当前销售额、去年同期销售额和同比增长率。
阅读全文