我有一个用户表,
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;
提前感谢您的帮助。
3条答案
按热度按时间u0sqgete1#
一个简单的解决方案,将工作在每一个MySQL版本,而不使用windows功能。加入同一个表3次
https://dbfiddle.uk/XjeXKUFE
klh5stk12#
您可以为同一年中的连续周定义唯一的组,并按以下方式汇总它们:
请参见demo。
xghobddn3#
窗口函数版本。
demo