我是球场上的新手,几天来我一直在与一个问题作斗争,这让我抓狂.简而言之:我正在寻找连续几天下单的用户.例如:20230715、20230715、20230716、20230717、20230717、20230718.
不连续购买的用户不应包括在内,例如:20230715、20230715、20230719.
你能帮我写一个SQL Oracle代码吗?非常感谢.我也试图为这个话题找到任何解决方案,但到目前为止我还没有找到任何解决方案.
这是我众多try 中的一个.除此之外,我还try 使用Lag()和Lead()函数,但收效甚微.
我想提取连续天数的客户的订单.此外,我还希望在单行/用户中管理匹配的实例,因为稍后我想要计算这些天/用户的支出
WITH ranked_data AS (
SELECT
"USER",
"COMPANY",
"CREATIONDATE",
ROW_NUMBER() OVER (PARTITION BY "USER", "COMPANY" ORDER BY "CREATIONDATE") AS rn
FROM
P_TEST_P
)
SELECT
"USER",
"COMPANY",
LISTAGG("CREATIONDATE", ', ') WITHIN GROUP (ORDER BY "CREATIONDATE") AS "CONSECUTIVE_DATES"
FROM
ranked_data
GROUP BY
"USER",
"COMPANY";
输入示例:
USER;Company;creationdate
Liza;Amigurumi KFT;20230712
Liza;Amigurumi KFT;20230713
Liza;Amigurumi KFT;20230714
Liza;Amigurumi KFT;20230715
Liza;Amigurumi KFT;20230728
Liza;Amigurumi KFT;20230718
Liza;Amigurumi KFT;20230722
Liza;Amigurumi KFT;20230723
Liza;Amigurumi KFT;20230724
Liza;Amigurumi KFT;20230729
Liza;Amigurumi KFT;20230729
Liza;Amigurumi KFT;20230729
Liza;Bubu btk;20230703
Liza;Bubu btk;20230703
Liza;Bubu btk;20230708
Liza;Bubu btk;20230711
Liza;Bubu btk;20230722
Liza;PGGNG;20230728
Liza;PGGNG;20230728
Liza;PGGNG;20230728
Liza;PGGNG;20230730
Patrik;YNWA;20230701
Patrik;YNWA;20230706
Patrik;YNWA;20230708
Patrik;YNWA;20230709
Patrik;HUNF;20230725
Patrik;HUNF;20230729
Laszlo;FOUR GRG;20230712
Laszlo;FOUR GRG;20230713
Laszlo;FOUR GRG;20230713
Laszlo;FOUR GRG;20230714