SQL — 获取 A 列的日期与 B 列的日期相差 7 天的倍数的所有行
SQL — get all rows where column A's date is a multiple of 7 days apart from column B's date
CREATE TABLE table_1 (
`userid` VARCHAR(2),
`date_accessed` DATE,
`rank` INT,
`country` VARCHAR(2)
);
INSERT INTO table_1
(`userid`, `date_accessed`, `rank`, `country`)
VALUES
('A.', '2019-01-01', 1, 'US'),
('B.', '2019-01-02', 1, 'FR'),
('A.', '2019-01-03', 2, 'US'),
('A.', '2019-01-04', 3, 'US'),
('B.', '2019-01-04', 2, 'FR');
这是 fiddle:https://www.db-fiddle.com/f/9F7XPiGtuQAYXQ99HfNJGN/0
下面是数据库的例子。我想要记录日期是距开始日期 7 天的倍数的所有行。开始日期和记录日期不是唯一的;它对于每个国家/地区都是唯一的,但是美国和法国都可以有 1 月 1 日的开始日期和 1 月 8 日的记录日期,例如。例如,在下面table中,我想拉取开始日期为2019-01-01且记录日期为2019-01-08的行。
| start_date | num_people | record_date | rating | country |
| ---------- | ---------- | ----------- | ------ | ------- |
| 2019-01-01 | 275 | 2019-01-08 | 4 | FR |
| 2019-01-02 | 150 | 2019-01-10 | 4 | FR |
| 2019-01-03 | 175 | 2019-01-09 | 5 | FR |
| 2019-01-04 | 300 | 2019-01-11 | 2 | FR |
| 2019-01-01 | 100 | 2019-01-08 | 8.5 | US |
| 2019-01-03 | 50 | 2019-01-10 | 5.5 | US |
| 2019-01-03 | 50 | 2019-01-17 | 5 | US |
---
我想做 84 天(每 7 days/every 周一次,持续 12 周)。
你只需要差值和模函数。
在MySQL中:
select t.*
from t
where mod(datediff(record_date, start_date), 7) = 0;
在 PrestoDB 中,这将是:
where mod(date_diff('day', start_date, record_date), 7) = 0
CREATE TABLE table_1 (
`userid` VARCHAR(2),
`date_accessed` DATE,
`rank` INT,
`country` VARCHAR(2)
);
INSERT INTO table_1
(`userid`, `date_accessed`, `rank`, `country`)
VALUES
('A.', '2019-01-01', 1, 'US'),
('B.', '2019-01-02', 1, 'FR'),
('A.', '2019-01-03', 2, 'US'),
('A.', '2019-01-04', 3, 'US'),
('B.', '2019-01-04', 2, 'FR');
这是 fiddle:https://www.db-fiddle.com/f/9F7XPiGtuQAYXQ99HfNJGN/0
下面是数据库的例子。我想要记录日期是距开始日期 7 天的倍数的所有行。开始日期和记录日期不是唯一的;它对于每个国家/地区都是唯一的,但是美国和法国都可以有 1 月 1 日的开始日期和 1 月 8 日的记录日期,例如。例如,在下面table中,我想拉取开始日期为2019-01-01且记录日期为2019-01-08的行。
| start_date | num_people | record_date | rating | country |
| ---------- | ---------- | ----------- | ------ | ------- |
| 2019-01-01 | 275 | 2019-01-08 | 4 | FR |
| 2019-01-02 | 150 | 2019-01-10 | 4 | FR |
| 2019-01-03 | 175 | 2019-01-09 | 5 | FR |
| 2019-01-04 | 300 | 2019-01-11 | 2 | FR |
| 2019-01-01 | 100 | 2019-01-08 | 8.5 | US |
| 2019-01-03 | 50 | 2019-01-10 | 5.5 | US |
| 2019-01-03 | 50 | 2019-01-17 | 5 | US |
---
我想做 84 天(每 7 days/every 周一次,持续 12 周)。
你只需要差值和模函数。
在MySQL中:
select t.*
from t
where mod(datediff(record_date, start_date), 7) = 0;
在 PrestoDB 中,这将是:
where mod(date_diff('day', start_date, record_date), 7) = 0