create table t (user_id int, value_id int, amount int, created_at date, updated_at date);
insert into t values
(1, 22, 1, '2022-02-02', '2022-02-02'),
(1, 23, 2, '2022-02-02', '2022-02-02'),
(1, 23, 1, '2022-02-02', '2022-02-02'),
(2, 22, 3, '2022-02-02', '2022-02-02'),
(2, 22, 4, '2022-02-02', '2022-02-02'),
(2, 22, 1, '2022-02-02', '2022-02-02'),
(3, 24, 3, '2022-02-02', '2022-02-02'),
(3, 24, 3, '2022-02-02', '2022-02-02');
with count_values as (
select user_id, value_id, count(*) cnt
from t
group by user_id, value_id
)
select values_22.user_id
from count_values values_22
join count_values as values_23 on
values_22.user_id = values_23.user_id and
values_23.value_id = 23 and values_23.cnt > 1
where values_22.value_id = 22 and values_22.cnt > 0;