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/caFeo5c4Try1q7FawHN7MC/1
Мой набор данных выглядит следующим образом:
user | date | rank | state
A. |2020-01-01 | 1 | NY
A. |2020-01-04 | 2 | NY
A. |2020-01-08 | 3 | NY
B. |2020-01-01 | 1 | CA
B. |2020-01-02 | 2 | CA
B. |2020-01-04 | 3 | CA
Это продукт группы операторов WITH intermediate_table AS - но на данный момент в моем запросе это структура, с которой я работаю.
Для каждого пользователя я хочу вычесть дату с рейтингом 1 из даты с рейтингом 2. Итак, для пользователя A я хочу получите РАЗМЕР между 1/1 и 1/4. В идеале результат должен выглядеть так:
user | date_diff | state
A. | 3 | NY
B. | 1 | CA
Конечная цель - получить среднее значение date_diff для каждой страны, усредненное по всем пользователям в этой стране.