inblog logo
|
silver
    SQL문제풀기

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

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

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/276035
     

    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

    RSS·Powered by Inblog