본문 바로가기

SQL/[HackerRank]

[HackerRank/MySQL] Print Prime Numbers

728x90

< Problem >

소수만 출력하기

링크:  https://www.hackerrank.com/challenges/print-prime-numbers/problem

 

Print Prime Numbers | HackerRank

Print prime numbers.

www.hackerrank.com


< Code >

WITH RECURSIVE CT_COUNT AS (SELECT 2 AS P
                            UNION ALL
                            SELECT A.P+1
                            FROM CT_COUNT A
                            WHERE A.P < 1000)
SELECT GROUP_CONCAT(P SEPARATOR '&')
FROM CT_COUNT A
WHERE NOT EXISTS (SELECT 1
                  FROM CT_COUNT B
                  WHERE A.P % B.P = 0 AND A.P != B.P)

 

< Lesson & Learned >

WITH RECURSIVE: 가상 테이블을 만드는 구문. 가상 테이블을 생성하면서 가상 테이블 자신의 값을 참조하여 값을 결정할 때 사용된다. 생성된 가상 테이블은 해당 쿼리문 내에서 여러 번 참조가 가능하다.
UNION: 두 개의 쿼리를 연속으로 추력, 두 개의 쿼리가 조회하는 칼럼의 개수와 데이터의 형식이 같아야 조회가 가능함. 중복 허용시에는 UNION ALL 사용
SELECT: 키워드와 함께 검색하고 싶은 속성의 이름을 나열
FROM: 키워드와 함께 검색하고 싶은 속성이 있는 데이블의 이름을 나열
WHERE: 키워드와 함께 비교 연산자(=, <, >=, <>)와 논리 연산자(AND, OR, NOT)를 이용한 검색 조건 제시

GROUP_CONCAT(a SEPARATOR 'b'): a에 구분자 b를 붙여 출력해준다. 구분자의 기본값은 쉼표(,)
NOT EXISTS(조건): 주어진 조건 비만족시 TRUE 결과를 출력한다.

728x90