[SQL]

HackerRank 코딩 테스트 - Symmetric Pairs(LV.Medium)

indongspace 2024. 10. 19. 09:10

 

 

 

You are given a table, Functions, containing two columns: X and Y.
Two pairs (X1, Y1) and (X2, Y2) are said to be symmetric pairs if X1 = Y2 and X2 = Y1.

Write a query to output all such symmetric pairs in ascending order by the value of X. List the rows such that X1 ≤ Y1.

두 개의 열이 포함된 함수라는 표가 주어집니다: X와 Y.
X1 = Y2이고 X2 = Y1인 경우 두 쌍(X1, Y1)과 (X2, Y2)은 대칭 쌍이라고 합니다.

쿼리를 작성하여 모든 대칭 쌍을 X 값만큼 오름차순으로 출력합니다. X1 ≤ Y1이 되도록 행을 나열합니다.

 

 

SELECT
    BASE.X,
    BASE.Y
FROM (
	# 1. X가 Y 보다 작거나 같은 조건이 TRUE이면 X, FALSE이면 Y로 (X, Y)의 쌍 생성
    SELECT
        IF(X <= Y, X, Y) AS X,
        IF(X <= Y, Y, X) AS Y
    FROM FUNCTIONS
) AS BASE
# 2. GROUP BY로 X와 Y 쌍 별로 그룹화
GROUP BY
    BASE.X,
    BASE.Y
# 3. HAVING 조건으로 같은 쌍이 두개 이상인 경우만 추출
HAVING
    COUNT(*) >= 2
ORDER BY
    X ASC