WHAT IS KATA?

KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.

이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.


- SQL


✔️ 문제 #1: Print Prime Numbers

소수를 구분 기호 &과 함께 출력하기

✔️ 제출 쿼리

✔️ 쿼리 분석

# 재귀적 CTE(Common Table Expression)를 사용하여 2부터 999까지의 숫자 생성
WITH RECURSIVE PRIME (
    SELECT 2 CNT
    UNION ALL
    SELECT CNT + 1
    FROM PRIME
    WHERE CNT < 1000
	)
# PRIME CTE에서 생성된 숫자 중 소수 찾기
# NOT EXISTS 조건을 사용하여 T1이 어떤 숫자로도 나누어 떨어지지 않는 경우를 찾고,
# 최종적으로 GROUP_CONCAT을 사용하여 소수를 `&`으로 구분하여 하나의 문자열로 출력
SELECT GROUP_CONCAT(CNT SEPARATOR '&') prime_numbers 
FROM (
    SELECT T1.CNT
    FROM PRIME T1
    WHERE NOT EXISTS (
        	SELECT 1
        	FROM PRIME T2
        	WHERE T2.CNT < T1.CNT
          	AND T2.CNT > 1
          	AND T1.CNT % T2.CNT = 0
    		)
    ORDER BY T1.CNT
) Primes

✔️ CHECK POINT

  • SQL

  • 재귀 쿼리 (CTE) :
    WITH RECURSIVE를 사용하여 2부터 999까지의 숫자 생성
    재귀적 접근을 통해 숫자를 생성하여, CNT 값을 1씩 증가시켜 999까지 모든 숫자를 생성하기
    대량의 연속적인 데이터를 효율적으로 생성할 때 활용하기

  • 소수 필터링 :
    NOT EXISTS 서브쿼리를 사용하여 소수가 아닌 숫자 필터링
    각 숫자에 대해, 2부터 자기 자신보다 작은 숫자들 중
    하나라도 나누어 떨어지는 숫자가 없는 경우 해당 숫자를 소수로 간주

  • GROUP_CONCAT :
    필터링된 소수들을 &으로 구분하여 하나의 문자열 생성
    GROUP_CONCAT 함수는 여러 행의 값을 하나의 문자열로 결합할 때 사용하며,
    이번 문제의 경우 각 소수 사이에 &를 삽입하여 출력


profile
커피 좋아하는 데이터 꿈나무

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN