데이터 차례로 확인해보기 1SELECT TO_CHAR(SALES_DATE, 'YYYY-MM-DD') AS SALES_DATE , PRODUCT_ID , USER_ID , SALES_AMOUNTFROM ONLINE_SALEWHERE TO_CHAR(SALES_DATE, 'YYYYMM') = '202203' 2SELECT TO_CHAR(SALES_DATE, 'YYYY-MM-DD') AS SALES_DATE , PRODUCT_ID , NULL AS USER_ID , SALES_AMOUNTFROM OFFLINE_SALEWHERE TO_CHAR(SALES_DATE, 'YYYYMM') = '202203' 3SELECT TO_CHA..
SELECT T1.MEMBER_ID, MAX(T1.REVIEW_SCORE) AS MAX_REVIEW_SCORE FROM REST_REVIEW T1GROUP BY MEMBER_ID --오류 SELECT A.MEMBER_NAME, MAX(B.REVIEW_SCORE) FROM MEMBER_PROFILE A INNER JOIN REST_REVIEW B ON A.MEMBER_ID = B.MEMBER_ID GROUP BY MEMBER_NAMEORDER BY REVIEW_SCORE DESC--수정SELECT A.MEMBER_NAME, MAX(B.REVIEW_SCORE) AS REVIEW_SCORE --별칭적어야함 안적으면 컬럼명 MAX(B.REVIEW_SCORE)이거로됨FROM MEMB..
정답SELECT T1.PRODUCT_ID, T1.PRODUCT_NAME, T1.TOTAL_SALESFROM ( SELECT A.CATEGORY, A.PRODUCT_ID, A.PRODUCT_NAME, SUM(A.PRICE * B.AMOUNT) AS TOTAL_SALES FROM FOOD_PRODUCT A INNER JOIN FOOD_ORDER B ON A.PRODUCT_ID =B.PRODUCT_ID WHERE TO_CHAR(PRODUCE_DATE, 'YYYY-MM') = '2022-05' GROUP BY A.CATEGORY, A.PRODUCT_ID, A.PRODUCT_NAME) T1ORDER BY T1.TOTAL_SALES DES..
내가 씀SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAMEFROM ANIMAL_INS A JOIN ANIMAL_OUTS B ON A.ANIMAL_ID = B.ANIMAL_IDWHERE A.SEX_UPON_INTAKE LIKE '%Intact%' --보호소에 들어올 당시에는 중성화되지 않았지만 AND (B.SEX_UPON_OUTCOME LIKE '%Spayed%' -- 보호소를 나갈 당시에는 중성화 OR B.SEX_UPON_OUTCOME LIKE '%Neutered%')ORDER BY B.ANIMAL_ID 다른 사람select animal_id, animal_type, namefrom animal_inswhere animal_id in ( select an..
정답/*1.아직 입양을 못 간 동물 중, 2.가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 3.이때 결과는 보호 시작일 순으로 조회해야 합니다.*/SELECT A.NAME, A.DATETIME FROM( SELECT T1.NAME, T1.DATETIME --2 FROM ANIMAL_INS T1 LEFT JOIN ANIMAL_OUTS B ON T1.ANIMAL_ID = B.ANIMAL_ID WHERE B.ANIMAL_ID IS NULL --1 ) A --서브쿼리WHERE ROWNUM - FROM 절 안에서 사용되는 서브쿼리는 서브..
-보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다. 내가 한거SELECT A.ANIMAL_ID, A.NAMEFROM ANIMAL_OUTS A INNER JOIN ANIMAL_INS B ON A.ANIMAL_ID = B.ANIMAL_IDWHERE A.DATETIME 다른 사람 코드📌암시적인 내부 조인 (implicit inner join)SELECT A.ANIMAL_ID, A.NAMEFROM ANIMAL_INS A, ANIMAL_OUTS BWHERE A.ANIMAL_ID = B.ANIMAL_IDAND A.DATETIME > B.DATETIMEORDER BY A.datetime ;이 쿼리에서 A..
입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 —>ANIMAL_OUTS 를 조회해야함 ID 순으로 조회하는 SQL문SELECT A.ANIMAL_ID, A.NAME FROM ANIMAL_OUTS A LEFT JOIN ANIMAL_INS B ON A.ANIMAL_ID = B.ANIMAL_ID WHERE B.ANIMAL_ID IS NULLORDER BY A.ANIMAL_ID 📌LEFT JOININNER JOIN을 사용하면 해당 동물의 기록 자체가 없기 때문에 조인 조건에 해당되지 않아 결과에 포함되지 않음LEFT JOIN을 사용하면 "ANIMAL_OUTS" 테이블의 모든 데이터를 결과에 포함
1이렇게 하면 sum이 안되어서 상품코드들이 겹쳐서 다 나옴SELECT A.PRODUCT_CODE, A.PRICE * B.SALES_AMOUNT AS SALESFROM PRODUCT AINNER JOIN OFFLINE_SALE BON A.PRODUCT_ID = B.PRODUCT_ID 2집계함수 쓰려고 GROUP BY 추가—>상품코드들 안겹치는거 볼수있음SELECT A.PRODUCT_CODE, SUM(A.PRICE * B.SALES_AMOUNT) AS SALESFROM PRODUCT AINNER JOIN OFFLINE_SALE BON A.PRODUCT_ID = B.PRODUCT_IDGROUP BY A.PRODUCT_CODE --참고ORDER BY SALES DESC, A.PRODUCT_CODE; -- S..
SELECT A.BOOK_ID AS BOOK_ID, B.AUTHOR_NAME AS AUTHOR_NAME, TO_CHAR(A.PUBLISHED_DATE, 'YYYY-MM-DD') AS PUBLISHED_DATEFROM BOOK A --기준테이블INNER JOIN AUTHOR BON A.AUTHOR_ID = B.AUTHOR_ID WHERE A.CATEGORY ='경제'ORDER BY PUBLISHED_DATE; 📌TO_CHAR(날짜 변환), 조인 기준 테이블 📌LEFT JOIN과 RIGHT JOIN데이터베이스에서 두 개의 테이블을 연결할 때 사용되는 조인 유형입니다.이 두 조인의 차이는 연결하는 테이블의 순서와 결과에 있습니다.LEFT JOIN:왼쪽 테이블을 기준으로 하여 오른쪽 테이블과 연결합니..
정답SELECT A.CATEGORY, SUM(B.SALES) TOTAL_SALES FROM BOOK AINNER JOIN BOOK_SALES BON A.BOOK_ID = B.BOOK_IDWHERE TO_CHAR(B.SALES_DATE, 'YYYY-MM') ='2022-01'GROUP BY A.CATEGORYORDER BY A.CATEGORY
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)**..
오답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 테이블을..