-- Hint: use Ctrl+Enter for SQL autocomplete
create table users(
id int,
name varchar(32),
age int
);
insert into users (id, name, age) values (1, 'Иван', 18),(2, 'Михаил', 18),(3, 'Светлана', 20),(4, 'Елена', 18);
create table user_hobbies(
user_id int,
hobby varchar(32)
);
insert into user_hobbies values
(1, 'футбол'),
(2, 'футбол'),
(3, 'чтение'),
(4, 'путешествия');
select
age, hobby, count(*) popularity
from user_hobbies
join users on user_hobbies.user_id = users.id
group by age, hobby;
select distinct
age,
first_value(hobby) over (partition by age order by popularity desc) AS hobby
from (
select
age, hobby, count(*) popularity
from user_hobbies
join users on user_hobbies.user_id = users.id
group by age, hobby
) hobbies
;