알고리즘 코드카타 실습 첫 날이다. SQL 기본강의 1주차 밖에 듣지 못하여 기본쿼리 구조만 아는 상태에서 시작하였더니 모르는 함수 사용이 나와서 첫 날부터 검색의 도움을 좀 받았다. 빠르게 이번 주 내로 완강한 후 제대로 풀어보고 싶은 욕심이 생겼다.
1. 이름이 있는 동물의 아이디
문제 : 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.
is null만 아는 상태에서 is not null로 활용해야겠다는 생각까진 도달했지만 where구문에 어떤 순서로 집어넣어야 할 지 고민했다.
SELECT ANIMAL_ID
from ANIMAL_INS
where IS NOT NULL NAME 이라고 적었다가 실행결과 오류가 발생했다.
where name <>is null도 가능한가 고민했다(오류)
where 조건 이므로 where 뒤에 Name 이 먼저 나오고 name이 null이 아닌 것을 찾는 것이므로
where name is not null로 작성하여 수정하였다.
또한 자주묻는 질문 을 통해 is not 'null'이라고 작은따옴표 안에 넣는것 또한 오류라는 것을 알았다. 테이블 안에 null이라고 적혀있어도 그건 내용이 없는것이지 null이라는 내용이 적힌 것이 아님.
2. 나이 정보가 없는 회원 수 구하기
문제 : USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요.
총 세 번의 오류 과정 끝에 정답을 제출할 수 있었다.
첫 번째 시도
SELECT count(user_id)
from user_info
where age is not null
라고 적어보았다. count함수를 사용해야겠다고 생각했고, 그 안에 유저아이디 수를 셀 거니까 괄호 안에 유저아이디를 넣었지만, 조건은 따로 있고, 전체 수를 세는것이므로 유저아이디를 넣을 필요 없이 *를 넣어주면 된다.
또한 컬럼명을 users로 지정해달라는 내용을 빠트렸으므로 as(users)를 추가해야 한다.
두 번째 시도
SELECT count(*) user_id
from user_info
where age is not null
count함수괄호 안에 *은 잘 넣었지만 별칭설정이 없고 카운트 뒷부분내용이 잘못되었다. as도 안붙이고 아이디의 모든 것(*)을 카운트 하겠다고 저렇게 작성하였었다.
카운트 함수와 별칭설정에 대한 기초가 부족했다.
세 번째 시도
SELECT count(*) as users
from user_info
where age is not null
select, from구문은 잘 설정이 되었지만, 조건식이 잘못되었다. where 구문에서 나이가 빈칸인 사람을 구해야 하는데 빈칸이 아닌 사람을 구하였다. is not null이 아닌 is null로 작성해야함을 깨달았다.
정답 :
SELECT count(*) as users
from user_info
where age is null
* 오늘 두 가지의 알고리즘 SQL 코드카타 문제를 작성해보며 느낀 점은 강의를 들을 때와는 달리 스스로 작성해야 하므로 문제를 똑바로 이해하는 집중력이 필요하며, 기본함수 구조에 대한 기본기의 중요성을 깨달았다.
is null 과 is not null 을 작성하는 방법에 대해 확실히 이해하게 되었다.
'SQL' 카테고리의 다른 글
[1203 TIL] -2 데이터분석 조별과제 쿼리짜기 (0) | 2024.12.03 |
---|---|
[1202 TIL] sql 코드카타(like,substr,when) (0) | 2024.12.02 |
[1129 TIL] (2) | 2024.11.29 |
[1128 TIL] 알고리즘SQL 코드카타 , WHERE / HAVING의 차이 (1) | 2024.11.28 |
[1127 TIL] SQL 작성 시 명명 규칙과 주석 처리 방법, null값의 의미, 조건연산자 필터링 (0) | 2024.11.27 |