본문 바로가기

프로그래머스/코딩테스트 연습28

SQL lv2 루시와 엘라 찾기 SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME in ('Lucy','Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') where in 구문 사용해서 해결했다. 2024. 4. 22.
SQL lv3 오랜 기간 보호한 동물(2) with dd as ( SELECT i.ANIMAL_ID as ANIMAL_ID, DATEDIFF(o.DATETIME, i.DATETIME) as dd FROM ANIMAL_INS i JOIN ANIMAL_OUTS o on i.ANIMAL_ID = o.ANIMAL_ID ) SELECT i.ANIMAL_ID, i.NAME FROM ANIMAL_INS i join dd on i.ANIMAL_ID = dd.ANIMAL_ID ORDER BY dd.dd desc limit 2 조회 시 ID와 NAME만 출력하기 위해 with 절 사용하여 key인 animal_id 컬럼과 DATEDIFF 사용한 컬럼으로 dd를 만들었다. 이후 id와 이름만 조회하고 with절과 join 하여 내림차순 정렬 후, 2개만 출력하기 위.. 2024. 4. 22.
SQL lv4 보호소에서 중성화 한 동물 SELECT i.ANIMAL_ID, i.ANIMAL_TYPE, i.NAME FROM ANIMAL_INS i JOIN ANIMAL_OUTS o on i.ANIMAL_ID = o.ANIMAL_ID where i.SEX_UPON_INTAKE != o.SEX_UPON_OUTCOME ORDER BY 1; ID, type, 이름을 출력하기 위한 select와 들어올 당시 중성화가 안되었지만 나갈 당시 중성화 된 동물 은 Upon 필드의 값이 다를것이기에 where 절에 비교문으로 처리하고 이름순으로 조회하기 위해 order by 사용했다. 2024. 4. 19.
SQL lv2 성분으로 구성한 아이스크림 총 주문량 SELECT I.INGREDIENT_TYPE, SUM(H.TOTAL_ORDER) FROM FIRST_HALF H INNER JOIN ICECREAM_INFO I ON I.FLAVOR = H.FLAVOR GROUP BY 1 두 테이블간 키로 join 하여 아이스크림 성분 타입 group by 진행했다. 2024. 4. 19.
SQL lv3 조건별로 분류하여 주문상태 출력하기 SELECT ORDER_ID, PRODUCT_ID, date_format(OUT_DATE, "%Y-%m-%d"), case when OUT_DATE '2022-05-01' then "출고대기" end as "출고여부" from food_order order by 1 출력이 timestamp가 아닌 yyyy-mm-dd로 맞춰줘야 해서 date_format 사용했다. 아래 로직은 다 맞는데 계속 틀려서 확인해 보니 출력이 timestamp로 되어서 그랬다. 세가지로 나누기 위해 case when 사용했다. 맛이없는 문제. 2024. 4. 16.
SQL lv3 있었는데요 없었습니다. SELECT i.ANIMAL_ID, i.NAME FROM ANIMAL_INS i INNER JOIN ANIMAL_OUTS o ON i.ANIMAL_ID = o.ANIMAL_ID where i.DATETIME > o.DATETIME order by i.DATETIME ID와 이름을 조회하기 위해 ID, Name만 select 하고 INS 테이블의 외래키인 ID 필드와 OUT테이블의 ID 필드를 Join했다. 입양일이 더 빠른 (큰) ID와 이름을 조회하기 위해 i.datetime > o.datetime 으로 필터링 하였다. 빠른순으로 조회하기 위해 order by 사용했다. 2024. 4. 16.
sql 조건에 맞는 아이템들의 가격의 총 합 구하기 select sum(PRICE) as TOTAL_PRICE from ITEM_INFO where RARITY = 'LEGEND' 가격의 총합을 위해 sum, 컬럼명 지정을 위해 as 희귀도를 필터링 하기 위해 where절 사용했다. 2024. 4. 5.
SQL 중성화 여부 파악하기 O, X를 판별하고 출력하기 위해 IF문 사용했다. Neutered, Spayed로 시작하는 SEX_UPON_INTAKE 필드의 레코드를 찾기 위해 LIKE 사용했다. CASE WHEN 을 사용해도 잘 작동하지만 가독성 때문에, TRUE, FALSE로 나눠지는 문제라서 IF로 작성했다. 정답코드 SELECT ANIMAL_ID, NAME, IF( SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%' ,'O','X') AS '중성화' FROM ANIMAL_INS 원래 필드를 수정해서 조회하려고 엄청나게 돌아가다가 단순히 O, X 로 출력만 하면 되는걸 깨닫고 O, X 넣었더니 바로 정답처리가 되었다. REPLACE, ALTER, UPDATE에.. 2024. 3. 7.
SQL 카테고리 별 상품 개수 구하기 SUBSTRING함수로 문자열 슬라이싱 했다. GROUP BY로 중복을 찾고 COUNT(*)로 해당 레코드들의 갯수를 조회했다. 정답코드 SELECT SUBSTRING(PRODUCT_CODE,1,2) AS CATEGORY, COUNT(*) AS PRODUCTS FROM PRODUCT GROUP BY CATEGORY 2024. 3. 7.