[SQL문제풀기] FrontEnd 개발자 찾기

silver's avatar
Dec 31, 2024
[SQL문제풀기] FrontEnd 개발자 찾기
Contents
문제MYSQL

문제

 

MYSQL

내가 작성한 정답

SELECT DISTINCT D.ID, D.EMAIL, D.FIRST_NAME, D.LAST_NAME FROM DEVELOPERS D JOIN SKILLCODES S ON D.SKILL_CODE & S.CODE != 0 WHERE S.CATEGORY = 'Front End' ORDER BY ID ASC;
ON D.SKILL_CODE & S.CODE != 0
DEVELOPERS 테이블에 SKILL_CODE과 SKILLCODES 테이블의 CODE를 비교해서, 두 코드가 겹치는 비트를 가지고 있는지 확인하여 겹치는 비트를 가진 해당 개발자는 그 기술을 가지고 있다고 판단
→ 한 사람이 여러 기술을 가지면 여러 개의 row로 출력된다.
→ front end 기술을 여러 개 가지고 있다면 여러 개의 row로 출력될 수 있으므로 distinct 필요
notion image
 

EXIST이용한 다른 방법

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPERS D WHERE EXISTS ( SELECT 1 FROM SKILLCODES S WHERE S.CATEGORY = 'Front End' AND (D.SKILL_CODE & S.CODE) != 0 ) ORDER BY ID ASC;
카테고리가 Front End'이고 DEVELOPERS 테이블에서 SKILL_CODE와 DEVELOPERS 테이블의 CODE를 비교하여 겹치는 비트를 가지면 true를 반환하여 이 조건을 만족하면 결과에 출력된다.
 
SELECT 1: 서브쿼리에서 SELECT 1을 사용하는 이유는, 실제로 어떤 데이터를 선택하는지가 중요하지 않고 결과의 행 수만 확인하므로, 어떤 값을 선택하든 상관없이 1을 선택하는 것이 일반적이다.
예를 들어, SELECT *를 사용하면 모든 열의 데이터를 가져오지만, EXISTS에서는 데이터의 내용이 필요 없고, 단순히 "결과가 존재하는가?"만 확인하면된다. 그러므로 SELECT 1을 사용하는 것이 더 간단하고 효율적이다.
 
💡
EXISTS 서브쿼리의 결과가 하나 이상의 행을 반환하는지를 확인. 서브쿼리가 결과를 반환하면 TRUE, 그렇지 않으면 FALSE를 반환하여 주로 특정 조건을 만족하는 데이터가 존재하는지를 체크할 때 사용된다.
EXISTS는 상위 쿼리의 컬럼을 참조할 수 있다.
Share article

silver