TIL 153일차

2024. 6. 3. 23:59회고/TIL(매일)

 

✏️도전한 점


1. 데이터분석 아티클 스터디 준비

2. 알쿼리즘 쿼리 스터디 준비

 

01 아티클 스터디


 

🔎아티클 스터디: AutoML의 한계와 미래

1. 오늘의 아티클(주제) 스마트하게 머신러닝 적용하는 법: ②AutoML의 한계와 미래 | 요즘IT1부에서는 AutoML이란 무엇인지, AutoML이 가진 장점과 주목받는 이유를 살펴봤습니다. 하지만 AutoML의 목

specialda.tistory.com

💡후기: AI를 활용한 머신러닝 자동화의 한계점과 그럼에도 불구하고 무한한 가능성을 지닌 AutoML에 대해 알 수 있었다.

 

02 쿼리 스터디


 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

<정답 코드>

SELECT INFO.ITEM_ID, ITEM_NAME, RARITY
FROM ITEM_INFO AS INFO
JOIN ITEM_TREE AS TREE
ON INFO.ITEM_ID = TREE.ITEM_ID
WHERE INFO.ITEM_ID NOT IN
(
SELECT DISTINCT PARENT_ITEM_ID
FROM ITEM_TREE
WHERE PARENT_ITEM_ID IS NOT NULL
)
ORDER BY INFO.ITEM_ID DESC

 

🕒문제 발생: NOT IN 다음에 리스트나 서브쿼리가 나와야 한다. 처음에 서브쿼리에 조건 WHERE절을 주지 않았다. IN을 했을 때는 바랐던 결과가 잘 나오더니 NOT IN을 하면 빈값이 나왔다. 문제는 서브쿼리로 만든 리스트 내에 NULL값이 포함됐기 때문이었다.

 

🔎문제 원인: SQL에서 NOT IN 절에 NULL 값이 포함되어 있을 경우, 예상치 못한 결과가 발생할 수 있다. NOT IN이 내부적으로 각 항목에 대해 <>(같지 않음) 연산을 수행하는데, SQL에서는 NULL과의 비교가 항상 UNKNOWN을 반환하기 때문이다. 결과적으로, NULL 값을 포함한 리스트와의 NOT IN 비교는 빈 결과를 반환할 수 있다.

 

💡문제 해결: <정답 코드>와 같이 서브쿼리 내에 ID IS NOT NULL 조건은 NULL 값이 NOT IN 절의 리스트에 포함되지 않도록 보장한다.

 

03 인사이트


- NOT IN 연산자는 리스트 또는 서브쿼리가 필요하다.
- NOT IN 연산자 다음에 단일 컬럼을 바로 사용할 수 없다.
- 따라서, 서브쿼리를 사용하여 PARENT_ITEM_ID 값을 리스트 형태로 반환해야 한다.