인프런 커뮤니티 질문&답변

Sunny님의 프로필 이미지
Sunny

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 중급 SQL

UNION 해커랭크 문제풀이(난이도 상)

해커랭크에서 오류가 생길 수 있나요? ㅠㅠㅠ

해결된 질문

작성

·

526

1

영상보고 코드 똑같이 따라한 것 같은데도 결과값이 저렇게 나오네용 ㅠㅠ

유니온 연산 전 쿼리는 13 13 결과가 잘 나와서 위에 주석 처리 해놨구요;

이후 쿼리 부분에서 계속 결과가 아무것도 안나오더라구요 

보통 SQL은 오타 문제일 수도 있어서 여러번 살펴보기도 했는데 무엇이 문제인지 찾지를 못해 답답한 마음에 올려봅니다 ! 도움부탁드립니다 ^^;;;

=== 아래는 코드 부분 복사했습니다 ===== 

-- 13, 13

SELECT X, Y FROM functions WHERE X = Y

GROUP BY X, Y HAVING COUNT(*) = 2

UNION

SELECT f1.X, f1.Y FROM functions AS f1

     INNER JOIN functions AS f2 ON f1.X = f2.Y AND f1.Y = f2.X

WHERE f1.X < f2.Y

ORDER BY X

답변 2

1

이보민님의 프로필 이미지
이보민
지식공유자

안녕하세요 Sunny님!

쿼리 확인해보니 WHERE 절에 `f1.X < f2.X`

이렇게 변경 해주시면 작동 잘 하는 걸 확인하실 수 있습니다.
JOIN 하실 때 f1.X = f2.Y 이렇게 조건이 걸려있기 때문에 f1.X와 f2.Y는 항상 같은 값을 갖고, 부등호 연산을 하시면 데이터가 하나도 나오지 않게되어요.

이런식으로 어디에서 문제가 있는지 모르겠고 오류도 나지 않는 경우에는 의심이 가는 부분을 한줄씩 주석처리 해보시면서 어느 코드를 넣었을 때 동작이 안되는 것 같은지 확인해보시는 것이 좋은 습관이 되실 수 있습니다.

더 궁금하신 점이 있으시면 댓글 남겨주세요 :)

감사합니다.

0

Sunny님의 프로필 이미지
Sunny
질문자

어머나 ㅠㅠㅠ 죄송해요 ㅠㅠ 

분명 제가어디 오타 냈겠지 하고 부릅뜨고 여러번 살펴도 보고 하는데도 꼭 그럴때면 안보이더니 ㅠㅠㅠ 


정말 감사합니다 ! 
문제가 쉽게 이해되지 않은 상태에서 에러까지 나니까 살짝 당황했었나봐요 ㅋㅋ 
다시한번 찬찬히 봐야겠어용 ^^ 

Sunny님의 프로필 이미지
Sunny

작성한 질문수

질문하기