SQL

청년 CRM 101 SQL 스터디 디비디비딥 5주차 보고서 (240130)

GEEEEEEEE

 

 

SQL청년 CRM 101 SQL 스터디 디비디비딥 5주차 보고서

 

 

 

(1)

 

 

 

 

자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

 

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

 

프로그래머스

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

programmers.co.kr

 

어제와 오늘 연속된 ORACLE 문제를 품으로써 LIKEGROUP BY등..

 

 

 

이전에는 바로 사용하지 못했던 것들에 대해서 조금 더 익숙해지고 능숙하게 사용할 수 있게 되었다.

 

 

 

위의 문제에서는 "통풍시트", "열선시트", "가죽시트"의 옵션중에 하나 이상의 옵션을

 

 

 

포함하고 있는 자동차를 종류 별로 몇 대인지 출력하는 SQL 문을 작성하는 것이었는데,

 

 

 

셋 중에 하나만 있어도 결과문에 나와야 하므로 WHERE 절에서 OR를 사용하였고,

 

 

 

 

자바에서의 Contain 함수와도 같은 LIKE '%포함하고자 하는 단어%'를 사용하였다.

 

 

 

 

그리고 GROUP BY를 사용하였으므로, SELECT에는 GROUP BY에 해당하는 컬럼을 

 

 

 

 

무조건 나타내줘야 한다.

 

 

 

 

나의 답변

 

 

 

 

 

(2)

 

 

 

이름에 el이 들어가는 동물 찾기

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

이 문제는

 

 

 

거진 1시간 동안 왜 틀렸는지 고민했던 거 같은데 틀린 이유를 보면

 

 

 

문제를 제대로 안 읽은 게 가장 컸다ㅎ

 

 

 

EL이 포함된 개의 이름과 아이디를 조회해야 하는데, 이들을 조회할 때 

 

 

 

대소문자 구분 없이 조회하지 않았기 때문에 계속해서 오답이 났던 것이다.

 

 

 

대소문자 구분없이 조회를 하기 때문에 조회된 이름에는, Elijah가 나올수도 있고

 

 

 

Nellie가 나올수도 있는 것이었다. 그렇다면 해당 조건을 맞추려면 어떻게 해야할까?

 

 

 

조회된 이름을 다 대문자로 바꾸던지, 소문자로 바꾸던지 둘 중 하나의 방법을 택하면 된다.

 

 

 

나의 경우는 조회된 이름을 모두 소문자로 바꾸는 방법을 택했고 LIKE 절에는 '%el%'을 적었다.

 

 

 

나의 답

 

 

 

소문자로 변환할 때는 LOWER를 사용하면 되고 

 

 

 

대문자로 변환하고 싶을 때에는 UPPER를 사용하면 된다.

 

 

 

UPPER(NAME) LIKE '%EL%'를 사용해도 마찬가지로 정답이다.

 

 

 

(3)

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

처음에는 NULL을 다루는 것이 적응이 안됐다.

 

 

 

일단 컬럼 = NULL을 사용했었는데, 이런 식으로 쓰는 것이 아닌

 

 

 

IS를 사용하는 것이었다. 

 

 

 

해당 문제에서는 NULL 값일 경우에, CASE문을 사용하여  'NO NAME'으로 지정해준다.

 

 

 

CASE WHEN NAME IS NULL THEN 'No name'

 

 

 

그리고 CASE문을 사용했으면 ,를 사용하여 다음 SELECT에서 보여줄

 

 

 

컬럼을 적어준다. (이게 정말 헷갈렸다 ^^)