728x90
반응형
업무 중에, IN 조건을 모두 만족하는 데이터를 출력할 때가 종종 있습니다. 일반적인 IN 조건은 하나라도 만족하는 값을 추출하지만, 이번에는 IN 조건을 사용할 때, IN 조건을 동시에 모두 만족하는 결과를 얻는 방법을 살펴보겠습니다.
테이블
CREATE TABLE my_table (
id NUMBER,
value VARCHAR2(10)
);
1. GROUP BY와 ROW_NUMBER() 을 사용하여 모든 값 포함 확인하기
SELECT T1.ID
FROM
(
SELECT id, VALUE, ROW_NUMBER()OVER(PARTITION BY ID ORDER BY ID) RN
FROM my_table
WHERE value IN ('a', 'b', 'c', 'd')
GROUP BY ID, VALUE
) T1
WHERE T1.RN = 4
;
FROM
(
SELECT id, VALUE, ROW_NUMBER()OVER(PARTITION BY ID ORDER BY ID) RN
FROM my_table
WHERE value IN ('a', 'b', 'c', 'd')
GROUP BY ID, VALUE
) T1
WHERE T1.RN = 4
;
2.GROUP BY와 COUNT() 을 사용하여 모든 값 포함 확인하기
SELECT DISTINCT T1.ID
FROM
(
SELECT id, VALUE, COUNT(*)OVER(PARTITION BY ID) CNT
FROM my_table
WHERE value IN ('a', 'b', 'c', 'd')
GROUP BY ID, VALUE
) T1
WHERE T1.CNT = 4
;
FROM
(
SELECT id, VALUE, COUNT(*)OVER(PARTITION BY ID) CNT
FROM my_table
WHERE value IN ('a', 'b', 'c', 'd')
GROUP BY ID, VALUE
) T1
WHERE T1.CNT = 4
;
테이블 자료
테이블 출력 결과
728x90
반응형
'개발공부 일지 > 오라클' 카테고리의 다른 글
오라클) 윈도우 함수로, 전체 집계 함수 값과 특정 컬럼 집계 함수 값 같이 보기 (0) | 2024.08.25 |
---|---|
오라클) Index Fast Full Scan 와 Index Full Scan 의 차이점. (0) | 2024.08.25 |
오라클)SID와 SERVICE_NAME 차이 (0) | 2023.10.26 |
오라클) REGEXP_LIKE (0) | 2023.10.17 |
오라클)Warning: Procedure creates with compilation errors (0) | 2023.10.12 |
댓글