LAG() OVER (PARTITION BY ORDER BY)怎么用
时间: 2023-11-12 07:07:44 浏览: 150
Oracle查询中OVER (PARTITION BY ..)用法
5星 · 资源好评率100%
LAG() OVER (PARTITION BY ORDER BY) 是Hive中非常常用的窗口函数,用于获取当前记录的前一条记录的某个列的值,其中 PARTITION BY 子句用于指定分组的列,ORDER BY 子句用于指定排序的列。以下是一个示例:
假设我们有一个表 "sales",包含 "id" (唯一标识每一笔销售)、"date" (销售日期) 和 "amount" (销售金额) 三个列,我们想要计算每一笔销售与前一笔销售的时间间隔和金额变化。可以使用以下查询:
```
SELECT
id,
date,
amount,
date - LAG(date) OVER (ORDER BY date) as time_diff,
amount - LAG(amount) OVER (ORDER BY date) as amount_diff
FROM sales;
```
在上述查询中,LAG(date) OVER (ORDER BY date) 用于获取当前记录的前一条记录的 "date" 列的值,LAG(amount) OVER (ORDER BY date) 用于获取当前记录的前一条记录的 "amount" 列的值。ORDER BY 子句指定按照 "date" 列进行排序。
希望能够对您有所帮助!
阅读全文