gpt4 book ai didi

mysql - 如何让连续 3 周或以上的用户有订单?

转载 作者:行者123 更新时间:2023-12-05 01:22:11 25 4
gpt4 key购买 nike

我有一个这样的用户表,

name      week_no   year_no
fb 5 2021
twitter 1 2022
twitter 2 2022
twitter 3 2022
twitter 7 2022
youtube 21 2022

我想查找在同一年内登录 >= 连续 3 周的用户的姓名。每年的周数都是唯一的。例如,在上表中我们可以看到用户 twitter 在同一年 2022 登录了 week_no: 1, 2, 3 因此满足我正在寻找的条件。

我正在寻找的输出,

name        year_no
twitter 2022

您可以使用以下方法创建示例表,

CREATE TABLE test (
name varchar(20),
week_no int,
year_no int
);
INSERT INTO test (name, week_no, year_no)
VALUES ('fb', 5, 2021),
('twitter', 1, 2022),
('twitter', 2, 2022),
('twitter', 3, 2022),
('twitter', 7, 2022),
('youtube', 21, 2022);

我是 SQL 语言的新手,我读到 group by 可以实现这一点,有人可以帮助我们必须使用什么函数/查询来实现同样的目标。

select * from test group by year_no, name;

提前感谢您的帮助。

最佳答案

一个简单的解决方案,适用于每个 MySQL 版本,无需使用 windows 功能。加入同一张 table 3次

SELECT t1.name,t1.year_no
FROM test t1
INNER JOIN test t2 ON t1.name=t2.name AND t1.year_no=t2.year_no
INNER JOIN test t3 ON t1.name=t3.name AND t1.year_no=t3.year_no
WHERE t2.week_no = t1.week_no + 1
AND t3.week_no = t1.week_no + 2

https://dbfiddle.uk/XjeXKUFE

关于mysql - 如何让连续 3 周或以上的用户有订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74458635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com