我使用AWS Athena(基于Presto),我有这个表命名为base
:
<表类>
id
类别
年
月
tbody><<tr>1 2021 6 1b 2022 8 12022 11 22022 1 22022 4 2b 2022 6 表类>
- 创建一个新列,它将包含每个类别"第一次看到(分区上的">id", ">类别"和订购">年",">"月)
- 在同一分区 上计算该列的运行和
WITH cte AS (
SELECT *,
CASE WHEN ROW_NUMBER() OVER(
PARTITION BY id, category
ORDER BY year, month) = 1
THEN 1
ELSE 0
END AS rn1
FROM base
ORDER BY id,
year_,
month_
)
SELECT id,
category,
year_,
month_,
SUM(rn1) OVER(
PARTITION BY id
ORDER BY year, month
) AS sumC
FROM cte