Я хочу выбрать идентификаторы, в которых значение2 будет больше 60%, например, ID 1 -> B = 66% (2/3 * 100), и записать все события для идентификатора 1. Может ли кто-нибудь мне помочь?
ID value1 value2 1 A 1 1 B 2 1 B 3 2 A 1 2 B 2 3 A 1 3 B 2 3 C 3
Вы должны group by id, value1 и использовать sum() оконную функцию для получения процента:
group by id, value1
sum()
select id from ( select id, 1.0 * sum(value1 = 'B') / sum(count(*)) over (partition by id) percent from tablename group by id, value1 ) t where t.percent > 0.6
См. demo . Результаты:
| id | | --- | | 1 |