inblog logo
|
silver
    SQL문제풀기

    [SQL문제풀기] 대장균들의 자식의 수 구하기

    silver's avatar
    silver
    Nov 30, 2024
    [SQL문제풀기] 대장균들의 자식의 수 구하기
     

    문제

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

    내가 작성한 정답

    SELECT E.ID , IFNULL(P.CHILD_COUNT,0) CHILD_COUNT FROM ECOLI_DATA E LEFT JOIN ( SELECT PARENT_ID ID, COUNT(*) CHILD_COUNT FROM ECOLI_DATA WHERE PARENT_ID IS NOT NULL GROUP BY PARENT_ID ORDER BY ID ASC ) AS P ON E.ID=P.ID ORDER BY E.ID ASC;
    처음에 작성한 정답 → CHILD_COUNT가 0이면 출력되는 경우를 생각하지 않음
    SELECT PARENT_ID ID, COUNT(ID) CHILD_COUNT FROM ECOLI_DATA WHERE PARENT_ID IS NOT NULL GROUP BY PARENT_ID ORDER BY ID ASC;
     

    다른 사람들이 작성한 정답

    SELECT e.ID, COUNT(c.ID) AS CHILD_COUNT FROM ECOLI_DATA e LEFT JOIN ECOLI_DATA c ON e.ID = c.PARENT_ID GROUP BY e.ID ORDER BY e.ID;
    💡
    COUNT 함수는 NULL이 아닌 값의 개수를 세므로, 자식 데이터가 없는 경우에도 결과가 0이 된다.
     
     

    MYSQL과 ORACLE에서 NULL다루기

    ㅤ
    MySQL
    Oracle
    ㅤ
    IFNULL
    IFNULL(column_name, 'default_value')
    -
    첫 번째 인자가 NULL이면 두 번째 인자를 반환.
    NVL
    -
    NVL(column_name, 'default_value')
    첫 번째 인자가 NULL이면 두 번째 인자를 반환.
    COALESCE
    COALESCE(column1, column2, 'default_value')
    COALESCE(column1, column2, 'default_value')
    인자 중 첫 번째로 NULL이 아닌 값을 반환.
    NULLIF
    NULLIF(column1, column2)
    NULLIF(column1, column2)
    두 인자가 같으면 NULL, 다르면 첫 번째 인자를 반환.
    ISNULL
    ISNULL(column_name)
    -
    인자가 NULL이면 1, 아니면 0을 반환.
    NVL2
    -
    NVL2(column_name, 'Not Null', 'Is Null')
    첫 번째 인자가 NULL이 아니면 두 번째 인자, NULL이면 세 번째 인자를 반환.
    CASE WHEN
    CASE WHEN column_name IS NULL THEN 'default_value' ELSE column_name END
    CASE WHEN column_name IS NULL THEN 'default_value' ELSE column_name END
    NULL 여부에 따라 다른 값을 반환할 수 있음.
    ㅤ
    ㅤ
    ㅤ
    ㅤ
    IS NULL
    column_name IS NULL
    column_name IS NULL
     NULL이면 TRUE를 NULL이 아니면 FALSE를 리턴
    IS NOT NULL
    column_name IS NOT NULL
    column_name IS NOT NULL
    NULL이면 FALSE를 NULL이 아니면 TRUE를 리턴
     
    Share article

    silver

    RSS·Powered by Inblog