V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  cau1iflower  ›  全部回复第 1 页 / 共 1 页
回复总数  2
2022-12-07 08:48:53 +08:00
回复了 wloverine 创建的主题 程序员 Hive SQL 题求教
@cau1iflower
```
SELECT item_id, price,
-- 如果当前价格和前一个价格不同,那么这个价格的起始时间就是当前日期。
-- 否则,起始时间就是前一个价格的起始时间。
CASE WHEN price != LAG(price) OVER (PARTITION BY item_id ORDER BY date)
THEN date
ELSE LAG(start_date) OVER (PARTITION BY item_id ORDER BY date)
END AS start_date,
-- 如果当前价格和后一个价格不同,那么这个价格的结束时间就是后一个价格的起始时间。
-- 否则,这个价格的结束时间就是 NULL 。
CASE WHEN price != LEAD(price) OVER (PARTITION BY item_id ORDER BY date)
THEN LEAD(start_date) OVER (PARTITION BY item_id ORDER BY date)
ELSE NULL
END AS end_date
FROM prices

```
2022-12-07 08:46:23 +08:00
回复了 wloverine 创建的主题 程序员 Hive SQL 题求教
ChatGPT 了解一下
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2578 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 9ms · UTC 00:31 · PVG 08:31 · LAX 16:31 · JFK 19:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.