📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/131530 문제요약PRICE 를 만원 단위 구간으로 나누기예 10,000원 이상 ~ 20,000원 미만 → 10,000각 구간 별 상품 개수 계산해서 PRODUCTS 컬럼에 추력구간 값(PRICE_GROUP)은 해당 구간의 최소 금액으로 표시결과는 가격대 오름차순 정렬❌ 2. 실패한 시도SELECT (PRICE / 10000) * 10000 AS PRICE_GROUP, COUNT(*) AS PRODUCTSFROM PRODUCTGROUP BY PRICE_GROUPORDER BY PRICE_GROUP; 처음에 FLOOR()을 안했더니 천원 단위로 구간이 나뉘고, 소수점 넷째..
My Tech Blog (MySQL)
📑 1. 문제설명❌ 2. 실패한 시도간단한 문제인데 어렵게 생각해서 오래 걸렸던 문제처음에 접근한 방법은 DATE_FORMAT() 으로 DATETIME을 포매팅 하는 것이었다.이 때 24시간제이기 때문에 %H를 썼는데 이렇게 하면 9시는 9로 출력되는 것이 아니고 0이 붙어서 09가 된다.그래서 %k로 바꿔서 출력했는데도 이번에는 정답 처리 안 됨 문제에서 포맷 함수를 쓰는 걸 의도 안 한 경우이다.그냥 시간만 뽑는 문제인데 %H나 %k로 풀어서 오답처리 됐다.%k까지 썼는데도 틀렸던 이유가 아마 “문자열 출력” 때문일 확률이 높다. 왜냐하면 DATE_FORMAT()이나 %k로 뽑아도 실제 출력은 문자열로 처리되기 때문이다.문제 채점은 정수 비교를 하는 경우가 있어서 "09" vs 9 차이로 틀린 판..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/151137 문제요약자동차 종류별로 해당 옵션이 하나라도 있는 차가 몇 대 인지 세는 문제대상 테이블: CAR_RENTAL_COMPANY_CAR조건: options 컬럼에 '통풍시트', '열선시트', '가죽시트' 중 하나 이상 포함출력 컬럼: CAR_TYPE, CARS(= COUNT(*))그룹 기준: CAR_TYPE정렬 기준: CAR_TYPE 오름차순❌ 2. 실패한 시도-- 코드를 입력하세요-- OPTIONS IN ('통풍시트', '열선싱트', '가죽시트')-- 종류별로 group by CAR_TYPE-- 몇 대? COUNT(*) AS CARSSELECT CAR_TYPE, COUNT(..
📑 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/157340 문제요약2022년 10월 16일에해당 날짜 포함해서 대여 중인 자동차는 '대여중'그렇지 않으면 '대여 가능'컬럼 이름은 AVAILABILITY자동차 ID 기준 내림차순 정렬자동차는 중복 없이 1번만 출력조건 정리START_DATE END_DATE >= '2022-10-16' → 이 범위에 해당하면 대여중⭐ 정답코드SELECT CAR_ID, CASE WHEN MAX(CASE WHEN DATE '2022-10-16' BETWEEN START_DATE AND END_DATE THEN 1 ..
📑 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/284527 3개의 테이블(HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE)을 조인해서 2022년 한 해(상·하반기) 평가 점수가 가장 높은 사원의 정보를 구하는 문제 문제요약2022년 데이터만 조회 (WHERE g.year = 2022)상·하반기 점수를 합산해서 SCORE 컬럼으로 표시최고 점수를 받은 사원만 조회출력 컬럼: SCORE, EMP_NO, EMP_NAME, POSITION, EMAIL집계 함수(SUM) 사용 시 GROUP BY에 나머지 컬럼들 포함 ⭐ 정답코드WITH total_scores AS ( SELECT e.emp_no, ..
📑 문제설명 ⭐ 정답코드 (MySQL)MySQL이랑 Oracle 모두 지원하는 문제인데 나는 MySQL로 풀었다. SELECT ANIMAL_TYPE, COUNT(*)AS countFROM animal_insWHERE animal_type IN ('Cat', 'Dog')GROUP BY animal_typeORDER BY FIELD(animal_type, 'Cat', 'Dog'); WHERE ANIMAL_TYPE IN ('Cat', 'Dog') → 고양이와 개만 필터링GROUP BY ANIMAL_TYPE → 종류별로 묶어서 마릿수 집계ORDER BY FIELD(ANIMAL_TYPE, 'Cat', 'Dog') → FIELD() 함수로 커스텀 정렬다른 부분은 어려운 게 없지만, 개와 고양이 순으로 정렬하는 부..
📑 문제설명2022년 5월에 예약한 환자 수를진료과 코드 별로 조회하기컬럼명 별칭 - '진료과코드', '5월예약건수'진료과별 예약한 환자수, 진료과 코드 순서로 오름차순 ⭐정답코드-- 코드를 입력하세요SELECT mcdp_cd AS "진료과코드", COUNT(pt_no) AS "5월예약건수"FROM appointmentWHERE DATE_FORMAT(apnt_ymd, '%Y-%m') = '2022-05'GROUP BY mcdp_cdORDER BY 2 ASC, 1 ASC; 1. 별칭 SELECT절에 별칭(alias) 쓸 때 MySQL에서 컬럼 별칭은 작은따옴표(' ')가 아니라 큰따옴표(" ")나 백틱( ` `)을 쓴다. 작은따옴표는 문자열 리터럴을 감쌀 때 쓰니까 컬럼 별칭 감쌀 때는 혼동되지 않게 큰..
📑 1. 문제설명❌ 2. 실패한 시도없음 ⭐ 3. 정답코드-- 코드를 입력하세요SELECT i.name, i.datetimeFROM animal_ins i LEFT OUTER JOIN animal_outs o ON i.animal_id = o.animal_idWHERE o.animal_id is nullORDER BY i.datetime ascLIMIT 3;animal_ins 테이블에는 있는데 animal_outs에는 없는 동물을 찾으면 된다.그렇다면 기준테이블은 animal_ins이고, 이 테이블을 왼쪽에 놓고 LEFT OUTER JOIN을 수행한다.JOIN된 테이블에서 o.animal_id가 null인 데이터를 조회하면 animal_ins에는 있고 animal_outs에는 없는 동물들 목록이 나온다..