퇴원환자 100명 이상인 진료과만 산출할 때 밑줄은? | 마이메르시 MyMerci
마이메르시 — 문제와 상세 해설까지 전부 무료 무료로 시작하기
보건행정
문제

퇴원환자 100명 이상인 진료과만 산출할 때 밑줄은?

· SELECT DEPT, COUNT(*) FROM DISCHARGE GROUP BY DEPT ____ COUNT(*) >= 100;

해설

집계함수(COUNT) 결과를 조건으로 거를 때는 GROUP BY 이후 단계에서 동작하는 HAVING을 사용한다. WHERE는 그룹화 이전의 개별 행을 거르므로 집계함수 조건을 넣을 수 없다.

같은 주제 다음 문제hypophysectomy

심화 해설

문제 분석
이 SQL 문제는 퇴원환자(DISCHARGE) 테이블에서 진료과(DEPT)별 환자 수를 집계한 후, 그 집계 결과가 100명 이상인 진료과만 출력하는 상황입니다.
SQL 작성 순서를 생각해 보면, GROUP BY로 그룹을 묶고 COUNT(*) 같은 집계 함수로 산출한 결과에 조건을 걸 때는 WHERE이 아니라 HAVING 절을 사용합니다. WHERE은 그룹화하기 전 개별 행(row)에 대한 필터 조건이고, HAVING은 그룹화된 집계 결과에 대한 필터 조건이기 때문입니다. 따라서 밑줄에는 HAVING이 들어가야 합니다.

심화 해설
보건의료 데이터 분석에서는 단순히 환자 수를 세는 것을 넘어, 특정 기준(예: 월 100건 이상 진료과)을 충족하는 그룹만 선별해 의료자원 배분이나 질 지표를 산출하는 일이 빈번합니다. SQL에서 이처럼 그룹화된 결과에 조건을 거는 HAVING 절은 보건행정 실무에서 핵심적인 도구입니다.

예를 들어, 한 상급종합병원이 진료과별 퇴원 건수를 분석한다고 가정합시다. 단순히 모든 진료과의 퇴원 건수를 나열하는 것을 넘어, 표본 수가 충분히 확보된(예: 100건 이상) 진료과만을 대상으로 평균 재원일수나 재입원율 같은 질 지표를 산출하려 할 때가 많습니다. 표본이 지나치게 적으면 통계적 신뢰도가 떨어지기 때문입니다. 이때 GROUP BY DEPT로 진료과별 퇴원 건수를 집계한 뒤, HAVING COUNT(*) >= 100 조건을 적용하면 분석에 적합한 진료과만 자동으로 추려낼 수 있습니다.

이러한 집계 후 필터링 개념은 현대 의료정보학에서 대규모 데이터를 다룰 때 더욱 중요해집니다. 한 연구[1]는 여러 병원 시스템에서 코로나19 팬데믹이 새로운 암 진단 건수에 미친 영향을 분석하면서, 특정 조건을 만족하는 집계 데이터만 추출하기 위해 HAVING과 유사한 논리의 질의를 활용했습니다. 이 연구에서는 프라이버시 보호를 위해 차등 프라이버시(differential privacy) 기법을 적용했는데, 노이즈가 추가된 집계 결과에서도 특정 임계값(threshold) 이상의 신뢰도 있는 집계만을 선별하는 것이 필수적이었습니다. 이는 HAVING 절이 단순한 SQL 문법을 넘어, 실제 연구 설계에서 분석 가능한 최소 표본 크기를 확보하는 논리적 장치로 기능함을 보여줍니다.

또 다른 연구[2]에서 제시된 ArcaDB와 같은 분산 쿼리 엔진은 GPU, TPU 등 하드웨어 가속기를 활용해 대규모 의료 데이터를 처리합니다. 이러한 환경에서는 방대한 로우 데이터를 먼저 그룹화하고 집계한 후, HAVING으로 원하는 집계 결과만 추려내는 작업이 성능 최적화의 핵심입니다. 만약 WHERE로 잘못 작성하면, 모든 개별 행을 먼저 필터링한 후 집계하게 되어 쿼리 엔진의 병렬 처리 이점을 살리기 어렵습니다. GROUP BYHAVING의 조합은 이기종 컴퓨팅 환경에서 의료 데이터 분석 파이프라인의 효율을 결정짓는 요소입니다.

무선 센서 네트워크(WSN) 환경에서 스카이라인 조인 쿼리를 처리하는 연구[4]도 유사한 원리를 보여줍니다. 센서 노드의 제한된 메모리와 에너지 소비 문제를 해결하기 위해, 중간 집계 결과에서 불필요한 데이터를 조기에 필터링하는 기법이 사용됩니다. 이는 병원정보시스템에서 수많은 트랜잭션을 DEPT로 그룹화한 후 HAVING으로 조건에 맞는 진료과만 남겨 후속 연산 부하를 줄이는 것과 동일한 맥락입니다.

보건행정 실무 적용
보건행정 실무에서는 이 문제의 HAVING 절을 다음과 같은 상황에서 자주 사용합니다.
- 의료 질 지표 산출: 특정 시술 건수가 연간 100건 이상인 의료기관만 대상으로 사망률이나 합병증 발생률을 비교 공개할 때.
- 진료과별 성과 분석: 퇴원 건수가 일정 규모(100건 이상)인 진료과만을 대상으로 평균 재원일수, 진료비 총액을 비교해 경영 효율성을 평가할 때.
- 건강보험 심사: 요양급여비용 청구 데이터에서 특정 상병 코드로 100건 이상 청구된 요양기관만을 추출해 심사 대상으로 선정할 때.

이 모든 경우에, 개별 청구 건이나 환자 한 명 한 명을 필터링하는 WHERE이 아니라, 기관별·진료과별로 묶어 집계한 결과에 조건을 거는 HAVING이 사용됩니다.

오답 분석
- 1번 WHERE: WHERE 절은 GROUP BY보다 먼저 실행되어 개별 행을 필터링합니다. COUNT(*) 같은 집계 함수의 결과에 조건을 걸 수 없습니다.
- 3번 ORDER BY: 결과를 정렬할 뿐, 특정 조건으로 행을 제외하지는 않습니다.
- 4번 DISTINCT: 중복된 값을 제거할 때 사용하며, 집계 조건과 무관합니다.
- 5번 BETWEEN: 특정 범위의 값을 지정할 때 사용하는 연산자로, 집계 결과에 대한 조건절 자체를 대체할 수 없습니다.
참고 문헌 (논문 출처)
  • [1]
    A quantitative and qualitative assessment of differential privacy's ability to support collaborative research using a real-world data analysis.일반논문Gieser DP, Arya AR, Smith RL, Vozenilek JA, Raman V, Handler JA. (2025) · DOI: 10.1093/jamiaopen/ooaf144
  • [2]
    ArcaDB: A Disaggregated Query Engine for Heterogenous Computational Environments.일반논문Ruiz-Rohena K, Rodriguez-Martínez M. (2024) · DOI: 10.1109/cloud62652.2024.00015
  • [4]
    In-Network Processing of Skyline Join Queries in Wireless Sensor Networks Using Synopses of Skyline Attribute Value Ranges.일반논문Kang H. (2023) · DOI: 10.3390/s23063022

임상 시나리오

집계 결과 필터링을 위한 HAVING 절진료과별 퇴원환자 수가 100건 이상인 경우만 산출

GROUP BY로 진료과별 퇴원 건수를 집계한 후, HAVING 절을 사용하여 집계된 환자 수(COUNT(*))가 100명 이상인 그룹만 필터링합니다.

질 지표 산출 시 표본 수가 충분히 확보된 진료과만을 선별하여 통계적 신뢰도를 확보하는 데 필수적인 구문입니다.

주의

WHERE 절은 그룹화 이전의 개별 행을 필터링하므로, 집계 결과에 대한 조건으로 사용하면 오류가 발생합니다.

핵심 개념

보건행정 진단고사 10 문제 · 로그인 없이 바로 볼 수 있어요

마이메르시로 국가고시 완벽 대비

기출문제와 상세 해설을 무료로. 내 약점을 분석하고 진도를 관리하며 더 똑똑하게 공부하세요.

무료로 시작하기

학습 참고용입니다. 실제 임상은 최신 지침과 소속 기관 프로토콜을 따르세요.