+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| name | varchar |
+---------------+---------+
id 是该表主键.
该表包含账户 id 和账户的用户名.
表 Logins:
+---------------+---------+
| Column Name | Type |
+---------------+---------+
| id | int |
| login_date | date |
+---------------+---------+
该表无主键, 可能包含重复项.
该表包含登录用户的账户 id 和登录日期. 用户也许一天内登录多次.
with t as
(SELECT *,
DATE_SUB(login_date,interval DENSE_RANK() over(PARTITION by id ORDER BY login_date) day) ref
FROM logins)
SELECT distinct t.id, max(a.name) name
FROM t,Accounts a WHERE t.id = a.id
GROUP BY id, ref
HAVING COUNT(DISTINCT login_date)>=5;
Create table If Not Exists Accounts (id int, name varchar(10));
Create table If Not Exists Logins (id int, login_date date);
Truncate table Accounts;
insert into Accounts (id, name) values ('1', 'Winston');
insert into Accounts (id, name) values ('7', 'Jonathan');
Truncate table Logins;
insert into Logins (id, login_date) values ('7', '2020-05-30');
insert into Logins (id, login_date) values ('1', '2020-05-30');
insert into Logins (id, login_date) values ('7', '2020-05-31');
insert into Logins (id, login_date) values ('7', '2020-06-01');
insert into Logins (id, login_date) values ('7', '2020-06-02');
insert into Logins (id, login_date) values ('7', '2020-06-02');
insert into Logins (id, login_date) values ('7', '2020-06-03');
insert into Logins (id, login_date) values ('1', '2020-06-07');
insert into Logins (id, login_date) values ('7', '2020-06-10');
-- case 2
Truncate table Accounts;
insert into Accounts (id, name) values (182,"Gavriel");
insert into Accounts (id, name) values (119,"Naftali");
insert into Accounts (id, name) values (31,"Yaakov");
insert into Accounts (id, name) values (136,"Menachem");
insert into Accounts (id, name) values (142,"Sarah");
insert into Accounts (id, name) values (204,"Daniel");
insert into Accounts (id, name) values (49,"Ezra");
insert into Accounts (id, name) values (27,"David");
Truncate table Logins;
insert into Logins (id, login_date) values (142,"2020-6-27");
insert into Logins (id, login_date) values (119,"2020-6-29");
insert into Logins (id, login_date) values (31,"2020-6-26");
insert into Logins (id, login_date) values (27,"2020-6-27");
insert into Logins (id, login_date) values (182,"2020-7-2");
insert into Logins (id, login_date) values (136,"2020-6-28");
insert into Logins (id, login_date) values (142,"2020-7-5");
insert into Logins (id, login_date) values (27,"2020-6-29");
insert into Logins (id, login_date) values (136,"2020-6-27");
insert into Logins (id, login_date) values (49,"2020-7-1");
insert into Logins (id, login_date) values (204,"2020-7-1");
insert into Logins (id, login_date) values (49,"2020-7-5");
insert into Logins (id, login_date) values (204,"2020-7-3");
insert into Logins (id, login_date) values (49,"2020-7-3");
insert into Logins (id, login_date) values (31,"2020-7-3");
insert into Logins (id, login_date) values (204,"2020-7-3");
insert into Logins (id, login_date) values (142,"2020-6-30");
insert into Logins (id, login_date) values (119,"2020-6-26");
insert into Logins (id, login_date) values (142,"2020-6-29");
insert into Logins (id, login_date) values (136,"2020-7-2");
insert into Logins (id, login_date) values (49,"2020-7-2");
insert into Logins (id, login_date) values (182,"2020-7-4");
insert into Logins (id, login_date) values (119,"2020-6-29");
insert into Logins (id, login_date) values (49,"2020-6-30");
insert into Logins (id, login_date) values (136,"2020-7-5");
insert into Logins (id, login_date) values (27,"2020-7-2");
insert into Logins (id, login_date) values (136,"2020-6-28");
insert into Logins (id, login_date) values (31,"2020-6-29");
insert into Logins (id, login_date) values (204,"2020-7-3");
insert into Logins (id, login_date) values (142,"2020-6-29");
insert into Logins (id, login_date) values (31,"2020-6-30");
insert into Logins (id, login_date) values (204,"2020-6-27");
insert into Logins (id, login_date) values (204,"2020-7-2");
insert into Logins (id, login_date) values (182,"2020-6-27");
insert into Logins (id, login_date) values (31,"2020-7-3");
insert into Logins (id, login_date) values (119,"2020-7-4");
insert into Logins (id, login_date) values (142,"2020-6-27");
insert into Logins (id, login_date) values (119,"2020-6-27");
insert into Logins (id, login_date) values (27,"2020-6-26");
insert into Logins (id, login_date) values (142,"2020-7-2");
insert into Logins (id, login_date) values (27,"2020-6-28");
insert into Logins (id, login_date) values (136,"2020-6-26");
insert into Logins (id, login_date) values (119,"2020-6-27");
insert into Logins (id, login_date) values (142,"2020-7-1");
insert into Logins (id, login_date) values (27,"2020-7-1");
insert into Logins (id, login_date) values (31,"2020-6-29");
insert into Logins (id, login_date) values (204,"2020-6-28");
insert into Logins (id, login_date) values (136,"2020-6-28");
insert into Logins (id, login_date) values (204,"2020-7-3");
insert into Logins (id, login_date) values (31,"2020-6-28");
insert into Logins (id, login_date) values (182,"2020-6-29");
insert into Logins (id, login_date) values (49,"2020-7-4");
insert into Logins (id, login_date) values (204,"2020-6-27");
insert into Logins (id, login_date) values (136,"2020-7-5");
insert into Logins (id, login_date) values (142,"2020-7-4");
insert into Logins (id, login_date) values (31,"2020-7-2");
insert into Logins (id, login_date) values (182,"2020-7-1");
insert into Logins (id, login_date) values (204,"2020-6-28");
insert into Logins (id, login_date) values (31,"2020-7-4");
insert into Logins (id, login_date) values (136,"2020-7-1");
insert into Logins (id, login_date) values (136,"2020-6-26");
insert into Logins (id, login_date) values (27,"2020-7-4");
insert into Logins (id, login_date) values (27,"2020-6-29");
insert into Logins (id, login_date) values (31,"2020-7-2");