Write a query to print all prime numbers less than or equal to 1000. Print your result on a single line, and use the ampersand (&) character as your separator (instead of a space).
For example, the output for all prime numbers <= 10 would be:
쿼리를 작성하여 모든 소수를 1000 이하로 인쇄합니다. 한 줄로 결과를 인쇄하고 공백 대신 앰퍼샌드 (&) 문자를 구분 기호로 사용합니다.
예를 들어, 모든 소수 <= 10의 출력은 다음과 같습니다:
2&3&5&7
SELECT GROUP_CONCAT(NUMB SEPARATOR '&') # 구분자 &으로 이어붙이기
FROM (SELECT @num:=@num+1 AS NUMB
# 주어진 테이블이 없기 때문에 모든 데이터베이스에 기본적으로 적재되어 있는 information_schema를 사용.
FROM information_schema.tables t1, # CROSS JOIN의 형태로 테이블 행을 늘린다.
information_schema.tables t2,
(SELECT @num:=1) tmp # 변수선언. 기본값 저장
) AS tempNum
WHERE NUMB <= 1000
# 소수를 걸러내기 위한 쿼리
AND NOT EXISTS (SELECT *
FROM (SELECT @nu:=@nu+1 AS NUMA
FROM information_schema.tables t1,
information_schema.tables t2,
(SELECT @nu:=1) tmp1
LIMIT 1000
) AS tempNum1
# NUMA가 NUMB의 약수일 경우만 참
WHERE FLOOR(NUMB/NUMA) = (NUMB/NUMA)
AND NUMA < NUMB
AND 1 < NUMA # 1보다 큰 자연수
)
'[SQL]' 카테고리의 다른 글
HackerRank 코딩 테스트 - Placements(LV.Medium) (0) | 2024.10.19 |
---|---|
HackerRank 코딩 테스트 - Symmetric Pairs(LV.Medium) (0) | 2024.10.19 |
프로그래머스 코딩 테스트 - 멸종위기의 대장균 찾기(LV.5) (0) | 2024.10.19 |
프로그래머스 코딩 테스트 - 상품을 구매한 회원 비율 구하기(LV.5) (0) | 2024.10.18 |
프로그래머스 코딩 테스트 - 특정 세대의 대장균 찾기(LV.4) (0) | 2024.10.18 |