Я пытаюсь написать запрос в MySQL, который выдаст наиболее часто встречающуюся пару значений. У меня есть следующая таблица:
Исходный набор данных
Эта таблица содержит потоковую активность пользователей c в определенный день. Я хочу выяснить, какая пара артистов была наиболее часто играемой в определенный день c. Ответ должен быть (Pink Floyd, Queen), потому что 3 пользователя слушали обоих исполнителей в один и тот же день. Как мне этого добиться?
Я начал с присоединения таблицы к себе, используя этот код:
With temp as (
select person_id, artist_name, count(*) as times_played from users where date_played = '2020-10-01' group by 1,2)
select a.person_id, a.artist_name, b.artist_name from temp a join temp b
On a.person_id = b.person_id and a.artist_name != b. artist_name;
В результате следует :
Я не конечно, с этой точки зрения, так что любая помощь будет полезна!
Ниже приведен код для создания таблицы в mySQL
create table users
(
person_id int,
artist_name varchar(255),
date_played date
);
insert into users
(person_id, artist_name, date_played)
values
(1, 'Pink Floyd', '2020-10-01'),
(1, 'Led Zeppelin', '2020-10-01'),
(1, 'Queen', '2020-10-01'),
(1, 'Pink Floyd', '2020-10-01'),
(2, 'Journey', '2020-10-01'),
(2, 'Pink Floyd', '2020-10-01'),
(2, 'Queen', '2020-10-01'),
(2, 'Pink Floyd', '2020-10-01'),
(3, 'Pink Floyd', '2020-10-01'),
(3, 'Aerosmith', '2020-10-01'),
(3, 'Queen', '2020-10-01'),
(4, 'Pink Floyd', '2020-10-01'),
(4, 'Led Zeppelin', '2020-10-01');