Выберите значения для того же идентификатора, которые имеют более 60% - PullRequest
0 голосов
/ 22 апреля 2020

Я хочу выбрать идентификаторы, в которых значение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

1 Ответ

0 голосов
/ 22 апреля 2020

Вы должны 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   |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...