서론프로그래머스에서 SQL 쿼리 문제를 풀다가 이제까지 별 생각없이 사용해 왔던 NOT IN 연산자에서 예상치 못한 결과 값이 나오는 경우가 있었다. 서치해보니 비교 대상에 NULL이 포함된 경우에 생기는 문제였는데, 이와 관련해서 찾아보니 공부가 필요한 내용이 꽤 있어서 정리하게 되었다. (마지막 결론단에 요약본으로 정리도 해두었으니 본론에서는 흐름 정도만 파악하면 충분하다!) 먼저 본론에 들어가기 전에 해당 토픽을 생각해볼 수 있는 리트코드의 문제를 공유한다. [ 문제 ]Each node in the tree can be one of three types:"Leaf": if the node is a leaf node. "Root": if the node is the root of the tree. "..
🌟🌟🌟🌟 1. SELECT - [특정 세대의 대장균 찾기] _ LEVEL 4대장균들은 일정 주기로 분화하며, 분화를 시작한 개체를 부모 개체, 분화가 되어 나온 개체를 자식 개체라고 합니다.다음은 실험실에서 배양한 대장균들의 정보를 담은 ECOLI_DATA 테이블입니다.3세대의 대장균의 ID(ID) 를 출력하는 SQL 문을 작성해주세요. 이때 결과는 대장균의 ID 에 대해 오름차순 정렬해주세요. [ 풀이 ] 풀이 1) 규칙을 발견하여 귀납적 처리(INNER JOIN 사용)SELECT A.idFROM ecoli_data AJOIN ecoli_data B ON A.parent_id = B.idJOIN ecoli_data C ON B.parent_id = C.idWHERE C.parent_id IS N..
1. SELECT - [흉부외과 또는 일반외과 의사 목록 출력하기] _ LEVEL 1DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요. 날짜 포맷은 예시와 동일하게 나와야합니다. [ 정답 쿼리 ]SELECT DR_NAME, DR_ID, MCDP_CD , DATE_FORMAT(HIRE_YMD,"%Y-%m-%d") HIRE_YMDFROM DOCTORWHERE MCDP_CD IN ("CS","GS") -- 진료과 조건은 CS 또는 GS이므로 IN 키워드 사용해서 표현ORDER BY HIRE_YMD D..