Как выбрать идентификаторы, которые имеют по крайней мере две конкретные вставки в данном столбце - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю с таблицей медицинских претензий в pyspark и хочу вернуть только идентификаторы пользователей, у которых есть как минимум 2 request_idsМоя таблица выглядит примерно так:

claim_id |  userid |  diagnosis_type |  claim_type
__________________________________________________
1            1            C100            M
2            1            C100a           M
3            2            D50             F
5            3            G200            M
6            3            C100            M
7            4            C100a           M
8            4            D50             F
9            4            A25             F

Из этого примера я хотел бы вернуть только идентификаторы пользователя, 1, 3 и 4.В настоящее время я создаю временную таблицу для подсчета всех отдельных экземпляров request_ids

create table temp.claim_count as
select distinct userid, count(distinct claim_id) as claims
from medical_claims
group by userid

, а затем извлекаю ее из этой таблицы, когда число Claim_id> 1

select distinct userid
from medical_claims
where userid (
    select distinct userid
    from temp.claim_count
    where claims>1)

равноЕсть ли лучший / более эффективный способ сделать это?

1 Ответ

1 голос
/ 23 сентября 2019

Если вам нужны только идентификаторы, тогда используйте group by:

select userid, count(*) as claims
from medical_claims
group by userid
having count(*) > 1;

Если вы хотите исходные строки, используйте функции окна:

select mc.*
from (select mc.*, count(*) over (partition by userid) as num_claims
      from medical_claims mc
     ) mc
where num_claims > 1;
...