본문 바로가기

코딩 테스트 연습/SQL

(23)
[ 코딩 테스트 ] NULL 처리하기 문제조건 정답 SELECT ANIMAL_TYPE, IFNULL(NAME, "No name"), SEX_UPON_INTAKEFROM ANIMAL_INSORDER BY ANIMAL_ID; 후기 이름이 없는 동물의 이름은 "No name"으로 표시=> IFNULL(NAME, "No name") IFNULL(컬럼, "대체값")조회할 때 해당 컬럼에 NULL 값을 찾아서 " 대체값 " 으로 바꿔서 표시해준다원본을 바꿔주는 건 아니다
[ 코딩 테스트 ] 가장 비싼 상품 구하기 문제조건 정답SELECT MAX(PRICE) as "MAX_PRICE" FROM PRODUCT;  후기  가장 높은 판매가=> MAX(PRICE) 컬럼명 지정=> as "MAX_PRICE"
[ 코딩 테스트 ] 나이 정보가 없는 회원 수 문제조건 정답SELECT COUNT(USER_ID) as "USERS" FROM USER_INFOWHERE AGE is NULL;  후기 나이 정보가 없는=> WEHRE AGE is NULL 회원이 몇 명인지=> COUNT(USER_ID) 컬럼명은 USERS로 지정=> as "USERS" 아무래도 회원수를 구하려면 가장 적합한 컬럼은 ID 컬럼이 아닐까 생각되어USER_ID 컬럼을 이용해 COUNT 했다
[ 코딩 테스트 ] 이름에 el이 들어가는 동물 찾기 문제조건 정답SELECT ANIMAL_ID, NAME FROM ANIMAL_INSWHERE ANIMAL_TYPE = 'Dog' AND LOWER(NAME) LIKE '%el%'ORDER BY NAME;  후기 아침이라 머리가 굳어있는지 %를 하나만 써넣고 왜 틀렸지?? 하고 있었다😅 이름에 "el"이 들어가는 개 ( 조건 2개 )=> WHERE ANIMAL_TYPE = 'Dog' AND LOWER(NAME) LIKE LOWER('%el%') 이때 AND 를 사용해서 두가지 조건이 만족할 때의 값을 보여주게 하고LIKE 함수는 특정 문자를 가지고 있는 데이터를 찾아준다%의 위치에 따라 앞에 포함된 글자인지, 뒤에 포함한 글자인지, 어디든 포함되어 있으면 찾아준다LOWER 함수는 해당 값의 영어들을 전부 ..
[ 코딩 테스트 ] 여러 기준으로 정렬하기 문제조건 정답SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INSORDER BY NAME, DATETIME DESC;  후기  이 문제는 제목 그대로 각 컬럼의 정렬을 다르게 주는 것이다어렵게 생각할 필요 없이 기본적으로 오름차순, 내림차순으로 바꾸고 싶을 땐 DESC 만 기억하면 된다 이름 순으로 조회=> ORDER BY NAME, 보호를 나중에 시작한 동물을 먼저=> DATETIME DESC
[ 코딩 테스트 ] 어린 동물 찾기 문제조건 정답SELECT ANIMAL_ID, NAME FROM ANIMAL_INSWHERE INTAKE_CONDITION != "Aged"ORDER BY ANIMAL_ID;  후기  동물 중 젊은 동물의=> WHERE INTAKE_CONDITION != "Aged" 아이디순으로 조회=> ORDER BY ANIMAL_ID 맨 밑에 주석으로 Aged 가 아닌 경우라고 친절하게 알려주고 있다글 대충 읽고 Aged 인 경우로 코드 쓰고 제출하지 말자 (내 이야기였다 ㅎ)
[ 코딩 테스트 ] 최솟값 구하기 문제조건 정답SELECT MIN(DATETIME) FROM ANIMAL_INS;  후기 굉장히 간단하다 가장 먼저 들어온 동물은 언제 들어왔는지=> MIN(DATETIME) 최솟값을 구하는 MIN 함수 사용
[ 코딩 테스트 ] 상위 n개 레코드 문제조건 정답SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1;  후기 가장 먼저 들어온=> ORDER BY DATETIME 한 마리만=> LIMIT 1 LIMIT 는 반환할 행수를 제한하는 기능이다 / 지정된 갯수만큼 보여준다DATETIME 의 오름차순으로 정렬된 NAME 의 행을 한개만 반환 사용할 때 구문 순서가 중요해보인다