작성
·
272
1
안녕하세요, 좋은 강의 정말 감사드립니다!
중급 강의 마지막 문제인 symmetirc pairs와 관련해 궁금한점이 있어 질문드립니다.
해당 문제에서 Functions 테이블을 셀프조인하는 것은 이해했는데, UNION을 쓰지 않고 셀프조인하여 새롭게 만들어진 테이블에서 한꺼번에 x=y 가 같은 페어와 x<>y인 페어를 찾는 방법은 없는 것인지 궁금합니다.
================================
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 count(*)>=2 or f1.x < f1.y
================================
이렇게 쿼리를 짜보았는데, 아래와 같이 에러 코드로 뜹니다.
WHERE 절에서는 count함수를 쓸 수 없는 것인가요?
답변 2
1
정말 감사합니다!!!! 답변 참고해서 아래처럼하니까 되네요!!!
SELECT f1.x, f1.y
FROM functions AS f1 INNER JOIN functions AS f2 ON f1.x=f2.y AND f1.y=f2.x
GROUP BY f1.x, f1.y
HAVING count(*)>=2 or f1.x < f1.y
ORDER BY f1.x
1
WHERE 절에서는 Aggregation Function (COUNT(), MAX(), MIN() 등)을 사용하실 수 없습니다.
Aggregation 결과물을 기준으로 필터링을 하고 싶을 때에는 HAVING 을 사용하시면 됩니다 :)