알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
프로그래머스에 상위 90% ~ 80%대 문제 입니다.
Think🤔
복습겸 작은 성취감을 위해 풀어봅니다..
Solution✍
가격이 제일 비싼 식품의 정보 출력하기
SELECT *
from FOOD_PRODUCT
where PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);
- 다른 방법으로는 ORDER BY DESC 한 다음 LIMIT 1을 구하는 방법이 있습니다.
SELECT *
FROM FOOD_PRODUCT
ORDER BY PRICE DESC
FETCH FIRST 1 ROWS ONLY;
-정렬한 후에 첫번째 반환
조건에 맞는 회원수 구하기
SELECT COUNT(1) FROM USER_INFO WHERE TO_CHAR(JOINED,'YYYY') LIKE '2021%' AND AGE >= 20 AND AGE <= 29;
SELECT COUNT(*) AS USERS
FROM USER_INFO
WHERE EXTRACT(YEAR FROM JOINED)=2021 AND AGE >= 20 AND AGE <=29
-BETWEEN 으로 사용해도 가능
-TO_CHAR를 이용해서 년도 LIKE로 검색 앞에만 2021년인 것
-연도 추출해서 반환 가능
카테고리 별 상품 개수 구하기
SELECT SUBSTR(PRODUCT_CODE,1,2) AS CATEGORY, COUNT(1)
FROM PRODUCT
GROUP BY SUBSTR(PRODUCT_CODE,1,2)
ORDER BY CATEGORY ASC;
- LEFT는 안된다.
중성화 여부 파악하기
SELECT ANIMAL_ID
, NAME
, CASE
WHEN LOWER(SEX_UPON_INTAKE) LIKE '%neutered%' THEN 'O'
WHEN LOWER(SEX_UPON_INTAKE) LIKE '%spayed%' THEN 'O'
ELSE 'X'
END AS "중성화"
FROM ANIMAL_INS
ORDER BY ANIMAL_ID , NAME , 중성화;
- LOWER은 안넣어도 상관없음
진료과별 총 예약 횟수 출력하기
SELECT MCDP_CD AS "진료과코드"
, COUNT(1) AS "5월예약건수"
FROM APPOINTMENT
WHERE TO_CHAR(APNT_YMD,'YYYYMM') = 202205
GROUP BY MCDP_CD
ORDER BY "5월예약건수" ASC , "진료과코드" ASC;
SELECT MCDP_CD AS "진료과코드"
, COUNT(1) AS "5월예약건수"
FROM APPOINTMENT
WHERE TO_CHAR(APNT_YMD,'YYYYMM') = 202205
GROUP BY MCDP_CD
ORDER BY 2 , 1;
인기있는 아이스크림
SELECT FLAVOR FROM FIRST_HALF ORDER BY TOTAL_ORDER DESC , SHIPMENT_ID
12세 이하인 여자 환자 목록 출력하기
SELECT PT_NAME , PT_NO ,GEND_CD,AGE,NVL(TLNO,'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12
AND GEND_CD = 'W'
ORDER BY AGE DESC , PT_NAME;
자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기
SELECT CAR_TYPE , COUNT(1) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;
SELECT CAR_TYPE, COUNT(1) AS CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE REGEXP_LIKE(OPTIONS, '시트', 'i') -- 'c'도 가능
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE;
- 대소문자를 구분해라 c , 상관없다 i 임
카테고리 별 도서 판매량 집계하기
SELECT CATEGORY , SUM(SALES) AS TOTAL_SALES
FROM BOOK A JOIN BOOK_SALES B
ON A.BOOK_ID = B.BOOK_ID
WHERE TO_CHAR(SALES_DATE,'YYYYMM') = 202201
GROUP BY CATEGORY
ORDER BY CATEGORY;
상품 별 오프라인 매출 구하기
SELECT A.PRODUCT_CODE , SUM(A.PRICE * B.SALES_AMOUNT) AS SALES
FROM PRODUCT A INNER JOIN OFFLINE_SALE B
ON A.PRODUCT_ID = B.PRODUCT_ID
GROUP BY A.PRODUCT_CODE
ORDER BY SALES DESC , A.PRODUCT_CODE ASC;
- 집계함수를 이용하여 합계 출력
Review🤩
오라클에서 정규식을 사용하는 법 , FETCH에 대해서 복습
'Algorithm' 카테고리의 다른 글
[프로그래머스] 조건에 맞게 수열 변환하기 3 (0) | 2024.01.05 |
---|---|
[프로그래머스] 조건에 맞는 도서와 저자 리스트 출력하기 / 조건별로 분류하여 주문상태 출력하기 / 보호소에서 중성화한 동물 / 성분으로 구분한 아이스크림 총 주문량 / 조건에 맞는 도서 .. (0) | 2024.01.04 |
[프로그래머스] 자동차 대여 기록 별 대여 금액 구하기 (0) | 2023.12.26 |
[프로그래머스] 동물 수 구하기 , 중복 제거하기 , 나이 정보가 없는 회원 수 구하기 , 이름에 el이 들어가는 동물 찾기, 가장 비싼 상품 구하기 , NULL 처리하기 , 강원도에 위치한 생상공장 목록 .. (1) | 2023.12.20 |
[프로그래머스] 상품을 구매한 회원 비율 구하기 (0) | 2023.12.20 |