프로그래머스 ORACLE 식품분류별 가장 비싼 식품의 정보 조회하기
DB/쿼리 문제풀이2023. 10. 6. 14:58프로그래머스 ORACLE 식품분류별 가장 비싼 식품의 정보 조회하기

1.가장 높은 가격 찾아냄SELECT CATEGORY, MAX(PRICE) FROM FOOD_PRODUCT WHERE CATEGORY IN ('과자', '식용유', '국', '김치') GROUP BY CATEGORY  2.정답SELECT CATEGORY, PRICE AS MAX_PRICE, PRODUCT_NAMEFROM FOOD_PRODUCT WHERE (CATEGORY, PRICE) IN ( SELECT CATEGORY, MAX(PRICE) FROM FOOD_PRODUCT WHERE CATEGORY IN ('과자', '식용유', '국', '김치') GROUP BY CATEGORY)ORDER BY MAX_PRICE DESC**(CATEGORY, PRICE)**..

DB/쿼리 문제풀이2023. 10. 6. 14:57프로그래머스 ORACLE 조건에 맞는 사용자와 총 거래금액 조회하기

오답SELECT T1.USER_ID, T1.NICKNAME, T1.TOTAL_SALESFROM ( SELECT B.USER_ID, B.NICKNAME, A.PRICE AS TOTAL_SALES FROM USED_GOODS_BOARD A INNER JOIN USED_GOODS_USER B ON A.WRITER_ID = B.USER_ID WHERE A.STATUS = 'DONE' --AND A.PRICE >=700000 GROUP BY B.USER_ID, B.NICKNAME, A.PRICE HAVING A.PRICE >=700000 ORDER BY TOTAL_SALES) T1 내부 서브쿼리에서 USED_GOODS_BOARD와 USED_GOODS_USER 테이블을..

프로그래머스 ORACLE 즐겨찾기가 가장 많은 식당 정보 출력하기
DB/쿼리 문제풀이2023. 10. 6. 14:55프로그래머스 ORACLE 즐겨찾기가 가장 많은 식당 정보 출력하기

왜 이렇게 작성하면 안 될까?SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE, REST_ID, REST_NAMEORDER BY FOOD_TYPE DESC;*GROUP BY로 묶으면 가장 상단에 있는 데이터들을 임의로 가져옵니다. SELECT에 MAX를 해도 최대값을 가져오는것이 아닌 그룹화된 테이블 가장 상단을 가져오게 된다https://school.programmers.co.kr/questions/38854📌SQL 쿼리 실행순서https://monawa.tistory.com/125  1.서브쿼리내용SELECT FOOD_TYPE, MAX(FAVORITES) FAVORI..

프로그래머스 ORACLE 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기
DB/쿼리 문제풀이2023. 10. 6. 14:53프로그래머스 ORACLE 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

정답SELECT CAR_TYPE, COUNT(*) CARS FROM CAR_RENTAL_COMPANY_CARWHERE OPTIONS LIKE '%시트%'GROUP BY CAR_TYPEORDER BY CAR_TYPE 📌LIKE, IN , EXIST 차이와 예제LIKE 연산자:-- 이름이 'John'으로 시작하는 고객 조회SELECT * FROM customers WHERE name LIKE 'John%';-- 이메일 주소에 'gmail'이 포함된 고객 조회SELECT * FROM customers WHERE email LIKE '%gmail%';IN 연산자: IN의 조건이 모두 해당하는 것들이 조회됨-- 고객 ID가 1, 3, 5인 고객 조회SELECT * FROM customers WHERE cu..

프로그래머스 ORACLE 성분으로 구분한 아이스크림 총 주문량
DB/쿼리 문제풀이2023. 10. 6. 14:53프로그래머스 ORACLE 성분으로 구분한 아이스크림 총 주문량

1. 조인해서 확인SELECT B.INGREDIENT_TYPE , A.TOTAL_ORDER FROM FIRST_HALF A INNER JOIN ICECREAM_INFO B ON A.FLAVOR =B.FLAVORORDER BY A.TOTAL_ORDER DESC 2. 정답SELECT B.INGREDIENT_TYPE , SUM(A.TOTAL_ORDER) AS TOTAL_ORDER FROM FIRST_HALF A INNER JOIN ICECREAM_INFO B ON A.FLAVOR =B.FLAVORGROUP BY B.INGREDIENT_TYPEORDER BY TOTAL_ORDER -- 컬럼의 별칭이 아니라 원래 컬럼 이름을 써야함 여기선 A.TOTAL_ORDER 안됨 B...

DB/쿼리 문제풀이2023. 10. 6. 14:52프로그래머스 ORACLE 가격대 별 상품 개수 구하기

정답SELECT TRUNC(PRICE,-4) AS PRICE_GROUP, COUNT(PRODUCTS) AS PRODUCTSFROM PRODUCTGROUP BY TRUNC(PRICE,-4)ORDER BY PRICE_GROUP📌TRUNChttps://gent.tistory.com/192📌**COUNT** 함수는 주로 NULL이 아닌 값을 가진 행의 수를 세는 데 사용되므로, 특정 컬럼 이름을 사용하는 것보다는 * (별표)를 사용하여 모든 행을 카운트하는 것이 더 일반적

프로그래머스 ORACLE 진료과별 총 예약 횟수 출력하기
DB/쿼리 문제풀이2023. 10. 6. 14:51프로그래머스 ORACLE 진료과별 총 예약 횟수 출력하기

정답SELECT MCDP_CD AS "진료과코드", COUNT(MCDP_CD) AS "5월예약건수" FROM APPOINTMENTWHERE TO_CHAR(APNT_YMD, 'YYMM') ='2205' --날짜변환GROUP BY MCDP_CDORDER BY COUNT(MCDP_CD), MCDP_CD;

프로그래머스 ORACLE 동명 동물 수 찾기
DB/쿼리 문제풀이2023. 10. 6. 14:51프로그래머스 ORACLE 동명 동물 수 찾기

SELECT NAME, COUNT(NAME) AS COUNT --해당 이름이 쓰인 횟수 FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >=2 --두 번 이상 쓰인 이름 ORDER BY NAME

프로그래머스 ORACLE 고양이와 개는 몇 마리 있을까
DB/쿼리 문제풀이2023. 10. 6. 14:50프로그래머스 ORACLE 고양이와 개는 몇 마리 있을까

정답SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS COUNTFROM ANIMAL_INSGROUP BY ORDER BY ANIMAL_TYPE ASC

DB/쿼리 문제풀이2023. 10. 6. 14:03프로그래머스 ORACLE 최솟값 구하기

**ROWNUM**은 정렬되기 이전에 부여되기 때문에 정렬과는 무관하게 첫 번째 행만 선택됩니다.SELECT DATETIME FROM ANIMAL_INS WHERE ROWNUM = 1 ORDER BY DATETIME DESC가장 최근 데이터의 날짜를 선택하는 결과SELECT DATETIMEFROM ( SELECT DATETIME FROM ANIMAL_INS ORDER BY DATETIME DESC) SUBWHERE ROWNUM = 1; 1.FETCH FIRST 1 ROWS ONLYSELECT DATETIMEFROM ANIMAL_INSORDER BY DATETIMEFETCH FIRST 1 ROWS ONLY; —가장 초기 데이터 선택2.MINSELECT DATETIMEFROM ANIMAL_..

프로그래머스 ORACLE 가격이 제일 비싼 식품의 정보 출력하기
DB/쿼리 문제풀이2023. 10. 6. 14:03프로그래머스 ORACLE 가격이 제일 비싼 식품의 정보 출력하기

SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE) PRICEFROM FOOD_PRODUCTGROUP BY PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY 1.ROWNUM 활용SELECT *FROM ( SELECT * FROM FOOD_PRODUCT ORDER BY PRICE DESC)WHERE ROWNUM = 1;2.서브쿼리 활용SELECT *FROM FOOD_PRODUCTWHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);

DB/쿼리 문제풀이2023. 10. 6. 14:00프로그래머스 ORACLE 자동차 평균 대여 기간 구하기

정답SELECT CAR_ID, ROUND(AVG(END_DATE - START_DATE + 1),1) AS AVERAGE_DURATION --반올림FROM CAR_RENTAL_COMPANY_RENTAL_HISTORYGROUP BY CAR_IDHAVING AVG(END_DATE - START_DATE +1) >= 7ORDER BY AVERAGE_DURATION DESC, CAR_ID DESC;두 날짜 사이의 전체 일수를 계산2022-10-01 - 2022-09-27 = 4로 계산하면, 결과값이 4일이 나옵니다.그러나 현실에서 2022-09-27부터 2022-10-01은 5일간의 기간입니다.일반적으로 두 날짜 간의 차이를 계산할 때는, 시작 날짜와 종료 날짜를 모두 포함하여 계산하는 것이 정확한..

image