코딩일기/자격증

[정보처리기사] SQL 예제: CROSS JOIN과 LIKE로 조건부 데이터 카운트하기 | 정보처리기사 실기 2021 기출문제 변형

jhy_2023 2024. 8. 6. 08:42
728x90
반응형

 

반응형
SELECT COUNT(*) CNT FROM A CROSS JOIN B WHERE A.NAME LIKE B.RULE;
A테이블과 B테이블을 참고하여 SQL문의 실행 결과를 쓰시오.

정답 : 5
728x90

이 쿼리는 A와 B의 모든 조합에서 A.NAME이 B.RULE과 일치하는 행의 수를 세는 역할을 합니다. CROSS JOIN을 통해 모든 조합을 만든 후, WHERE 절을 통해 조건을 만족하는 행들만 필터링하여 COUNT로 세는 구조입니다.



1. CROSS JOIN

CROSS JOIN은 두 테이블의 모든 가능한 조합을 만드는 작업입니다. A와 B의 CROSS JOIN 결과는 다음과 같습니다.
총 12개의 조합이 생성되었습니다. A의 각 행은 B의 모든 행과 조합됩니다.

2. WHERE 절의 조건 적용

WHERE A.NAME LIKE B.RULE 조건을 적용하여 A.NAME이 B.RULE 패턴과 일치하는 조합을 찾습니다.
LIKE 연산자는 문자열이 특정 패턴과 일치하는지 확인하는 연산자입니다. 여기서 %는 0개 이상의 임의의 문자를 의미합니다.

LIKE 연산자 일치 검사

  • John과 J% (John은 J로 시작) → 일치
  • John과 A% (John은 A로 시작하지 않음) → 불일치
  • John과 B% (John은 B로 시작하지 않음) → 불일치
  • John과 %o% (John은 o를 포함) → 일치
  • Alice와 J% (Alice는 J로 시작하지 않음) → 불일치
  • Alice와 A% (Alice는 A로 시작) → 일치
  • Alice와 B% (Alice는 B로 시작하지 않음) → 불일치
  • Alice와 %o% (Alice는 o를 포함하지 않음) → 불일치
  • Bob과 J% (Bob은 J로 시작하지 않음) → 불일치
  • Bob과 A% (Bob은 A로 시작하지 않음) → 불일치
  • Bob과 B% (Bob은 B로 시작) → 일치
  • Bob과 %o% (Bob은 o를 포함) → 일치

조건을 만족하는 행들

조건을 만족하는 행들만 남겨보면 다음과 같습니다.
총 5개의 조합이 조건을 만족합니다.

3. COUNT 함수

COUNT(*) 함수는 선택된 행의 수를 계산합니다. 따라서 최종 쿼리는 5를 반환합니다.

SELECT COUNT(*) CNT 
FROM A 
CROSS JOIN B 
WHERE A.NAME LIKE B.RULE;

최종 결과


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형