프로그래머스의 SQL 고득점 키트에 있는 GROUP BY 문제 모음
재구매가 일어난 상품과 회원 리스트 구하기
FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY 순으로 실행
1. FROM 대상 테이블 참조
2. WHERE 조건
3. GROUP BY: 특정 컬럼을 기준으로 그룹화합니다. (행들을 소그룹화)
4. HAVING: 그룹에 대한 조건절, 그룹 중 조건에 맞는 그룹만 남깁니다.
5. SELECT 질의/출력
6. ORDER BY 데이터 정렬
성분으로 구분한 아이스크림 총 주문량 LV 2
명시적 JOIN
작은 순서대로-> 오름차순
-- 코드를 입력하세요
SELECT I.INGREDIENT_TYPE, SUM(F.TOTAL_ORDER) AS TOTAL_ORDER
FROM FIRST_HALF F JOIN ICECREAM_INFO I ON F.FLAVOR = I.FLAVOR
GROUP BY I.INGREDIENT_TYPE
ORDER BY TOTAL_ORDER;
.
진료과별 총 예약 횟수 출력하기 LV 2
문제풀이
1. TO_CHAR(칼럼, '형식') = '형식'
ORDER BY ->
SELECT MCDP_CD AS "진료과코드"
, COUNT(*) AS "5월예약건수"
FROM APPOINTMENT
WHERE TO_CHAR(APNT_YMD, 'YYYY-MM') = '2022-05'
GROUP BY MCDP_CD
ORDER BY "5월예약건수", "진료과코드";
.한글 ALIAS 는 " " 써야한다. ??
문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/132202
자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기
문제풀이
OPTIONS LIKE '%열선시트%' or ~~
--COUNT(*) AS CARS 해도 정답
SELECT CAR_TYPE, COUNT(CAR_TYPE) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%' OR
OPTIONS LIKE '%열선시트%' OR
OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE
.
가격대 별 상품 개수 구하기
자동차 대여 기록에서 대여중 대여 가능 여부 구분하기
TODO
자동차 ID를 기준으로 내림차순
조건
10월16일 사이에 있으면 대여 중 ELSE 대여가능 END AS AVA~
얘를 MAX 한 값을 찾아야한다. 제일 최신 기록으로 하기 위해서
SELECT CAR_ID,
MAX(CASE WHEN '2022-10-16' BETWEEN TO_CHAR(START_DATE, 'YYYY-MM-DD') AND TO_CHAR(END_DATE, 'YYYY-MM-DD')
THEN '대여중'
ELSE '대여 가능'
END) AS AVAILABILITY
FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY
GROUP BY CAR_ID
ORDER BY CAR_ID DESC;
'프로그래머스 > SQL' 카테고리의 다른 글
[프로그래머스]잡은 물고기의 평균 길이.oracle (0) | 2024.03.19 |
---|---|
SELECT 유형 모음 [프로그래머스.oracle] (SQL 고득점 키트) (0) | 2024.03.14 |
ORACLE 코테 준비 정리 (1) | 2023.10.21 |
STRING/DATE 유형 모음 [프로그래머스.oracle] (SQL 고득점 키트) (0) | 2023.10.20 |
오라클 JOIN 정리 (1) | 2023.10.19 |