왜 이렇게 작성하면 안 될까?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..
정답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..
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...
정답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이 아닌 값을 가진 행의 수를 세는 데 사용되므로, 특정 컬럼 이름을 사용하는 것보다는 * (별표)를 사용하여 모든 행을 카운트하는 것이 더 일반적
정답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;
SELECT NAME, COUNT(NAME) AS COUNT --해당 이름이 쓰인 횟수 FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >=2 --두 번 이상 쓰인 이름 ORDER BY NAME
정답SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS COUNTFROM ANIMAL_INSGROUP BY ORDER BY ANIMAL_TYPE ASC
**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_..
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);
정답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일간의 기간입니다.일반적으로 두 날짜 간의 차이를 계산할 때는, 시작 날짜와 종료 날짜를 모두 포함하여 계산하는 것이 정확한..
정답SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, CASE WHEN STATUS = 'SALE' THEN '판매중' WHEN STATUS = 'RESERVED' THEN '예약중' ELSE '거래완료'END AS STATUSFROM USED_GOODS_BOARD WHERE TO_CHAR(CREATED_DATE, 'YYYY-MM-DD') = '2022-10-05'ORDER BY BOARD_ID DESC
정답SELECT HISTORY_ID, CAR_ID, TO_CHAR(START_DATE, 'YYYY-MM-DD') AS START_DATE, TO_CHAR(END_DATE, 'YYYY-MM-DD') AS END_DATE, CASE WHEN END_DATE - START_DATE + 1 >= 30 THEN '장기 대여' ELSE '단기 대여' END AS RENT_TYPEFROM CAR_RENTAL_COMPANY_RENTAL_HISTORYWHERE TO_CHAR(START_DATE, 'YYYY-MM') = '2022-09'ORDER BY HISTORY_ID DESC;