목록자료구조 & 알고리즘 (코딩테스트 대비) (13)
기록해야 기억에 남는다

📖 상위 n개 레코드 ANIMAL_INS NAME Type Nullable ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VARCHAR(N) FALSE 동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요. -> ANIMAL_INS 테이블에서 row들을 조회하되, 동물 보호소에 가장 먼저 들어온 동물의 이름을 출력해야 한다. row 들을 DATETIME 순으로 정렬한 후 가장 처음에 오는 row 한개의 NAME을 출력하면 된다. 📖 MySQL SELECT N..

📖 이름이 있는 동물의 아이디 ANIMAL_INS NAME Type Nullable ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VARCHAR(N) FALSE 동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다. -> 이름이 없는 경우는 NULL이므로 IS NOT NULL 조건을 이용하여 이름이 있는 row들을 조회할 수 있다. 이때 ANIMAL_ID 기준으로 오름차순 해야 함에 주의하자. 📖 MySQ..

📖 최댓값 구하기 ANIMAL_INS NAME Type Nullable ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VARCHAR(N) FALSE 가장 최근에 들어온 동물은 언제 들어왔는지 조회하는 SQL 문을 작성해주세요. -> 간단하게 MAX를 이용하여 가장 최근에 들어온 (시간 값이 가장 큰) 동물을 찾아낼 수 있다. 📖 MySQL, Oracle SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS; 📖 Check MIN, MAX, SUM은 간단하지만 은..

📖 강원도에 위치한 생산공장 목록 출력하기 FOOD_FACTORY Column name Type Nullable FACTORY_ID VARCHAR(10) FALSE FACTORY_NAME VARCHAR(50) FALSE ADDRESS VARCHAR(100) FALSE TLNO VARCHAR(20) FALSE FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요. -> 강원도에 위치한 식품공장을 찾아내야 하므로 LIKE를 이용하여 FACTORY_NAME이 '강원도'로 시작하는 Row들을 찾아낸다. 📖 MySQL, Oracle SELECT FACTORY_ID, FAC..

📖 경기도에 위치한 식품창고 목록 출력하기 FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 결과는 창고 ID를 기준으로 오름차순 정렬해주세요. -> FREEZER_YN이 NULL일 경우를 처리해주면 된다. ySQL에서 CASE WHEN THEN 구문을 이용하여 처리해도 되고 간결하게 IFNULL(column, replacement value) 을 사용해도 된다. 주소가 경기도로 시작하는 경우만 필터링 해야 하기 때문에 LIKE를 이용해서 LIKE '경기도%' 로 처리해주면 경기도를 접두사로 가지는 요소들을 필터링 해준다. 📖 MySQL SELECT WARE..

📖 나이 정보가 없는 회원 수 구하기 USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 USERS로 지정해주세요. -> WHERE 절에서 IS NULL 조건을 이용하여 AGE가 NULL인 경우가 몇개인지 COUNT(column)을 이용해서 세어주면 된다. 📖 MySQL, Oracle SELECT COUNT(USER_ID) AS USERS FROM USER_INFO WHERE AGE IS NULL; 📖 Check 해당 column이 NULL인지 여부를 조건으로 사용할 때 (1) column IS NULL -> NULL일 경우 (2) column IS NOT NULL -> NULL이 아닐 경우 를 사용해주면 된다.

📖 조건에 맞는 회원수 구하기 USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. -> COUNT를 이용해서 조건에 맞는 USER수 (USER_ID column의 수)를 세어 출력하면 된다. 조건(1) -> JOINED = '2021', 조건(2) -> 20 TO_CHAR(column, format) 를 사용해주면 된다.

📖 가장 비싼 상품 구하기 PRODUCT 테이블에서 판매 중인 상품 중 가장 높은 판매가를 출력하는 SQL문을 작성해주세요. 이때 컬럼명은 MAX_PRICE로 지정해주세요. -> 간단히 MAX를 이용해서 PRICE column의 최댓값을 쿼리할 수 있다. 📖 MySQL, Oracle SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT; 📖 Check 최댓값은 MAX(column) 최솟값은 MIN(column) 을 이용하자.

📖 12세 이하인 여자 환자 목록 출력하기 PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요. -> 문제에서 요구하는 사항에 맞게 PT_NAME, PT_NO, AGE, TLNO 칼럼을 출력하면 된다. 이때 TLNO의 경우 NULL이라면 NONE으로 치환해주어야 한다. 문제의 조건에 맞게 AGE의 기준으로 내림차순, PT_NAME을 기준으로 오름차순으로 정렬하여 출력하면 된다. 📖 MySQL SELECT PT_NAME, PT_NO, GEND_CD, AGE..

📖 인기있는 아이스크림 DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요. -> 문제에서 요구하는 사항에 맞게 DR_NAME< DR_ID, MCDP_CD, HIRE_YMD 칼럼을 출력하면 된다. 이때 HIRE_YMD의 경우 'yyyy-mm-dd' 포맷으로 출력해야 한다. 문제의 조건에 맞게 HIRE_YMD의 기준으로 내림차순, DR_NAME을 기준으로 오름차순으로 정렬하여 출력하면 된다. 📖 MySQL SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIR..