
데이터 차례로 확인해보기 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 sqltext.TEXT, req.session_id, req.status, req.command, req.cpu_time, req.total_elapsed_time FROM sys.dm_exec_requests req CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext--프로시저내용조회EXEC UP_SP_HELP_TABLE--테이블 정보 보기EXEC UP_SP_HELP_TABLE T1-- 실행중인 쿼리 보기SELECT sqltext.TEXT, req.session_id, req.status, req.command, req.cpu_time, req.total_elapsed_time FROM sys.dm_exec_requests..
📌 PARTITION BY 1️⃣ PARTITION BY란?PARTITION BY는 하나의 테이블을 특정 기준으로 그룹(파티션)으로 나누는 기능입니다.엑셀로 치면, 필터(Filter)를 적용하여 그룹별로 데이터를 정렬하는 것과 비슷합니다.2️⃣ PARTITION BY 없이 ROW_NUMBER() 사용하면?사원번호 부서 입사일1001영업2023-03-011002영업2022-08-151003IT2021-06-101004IT2023-05-201005IT2019-12-01만약 ROW_NUMBER()를 사용하여 입사일이 빠른 순서대로 일련번호를 부여하면, 아래처럼 전체 데이터에 대해 번호가 매겨집니다.SELECT 사원번호, 부서, 입사일, ROW_NUMBER() OVER(ORDER BY 입사일 A..
문자열을 수정하는 데 사용일반적으로 특정 위치부터 문자열을 대체하거나 제거할 때 사용 가정: "Hello, World!" 라는 문자열을 사용합니다.DECLARE @text NVARCHAR(100) = 'Hello, World!' 1. 문자열 대체-- 문자열 "World"를 "Universe"로 대체SET @text = STUFF(@text, 7, 5, 'Universe')SELECT @text결과: "Hello, Universe!"STUFF(@text, 7, 5, 'Universe')는 문자열 @text의 7번째 위치부터 시작해서 5개의 문자를 'Universe'로 대체합니다. 2. 문자열 제거-- 문자열 "Universe!"를 제거SET @text = STUFF(@text, 7, 8, '')SE..
테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업트리거는 데이터 조작 언어(DML)의 데이터 상태의 관리를 자동화하는 데 사용된다. 무결성 제약 조건 유지상황: 주문 테이블(Order)에 주문 금액(OrderAmount)이 양수인 경우만 허용트리거: 주문 테이블에 INSERT 또는 UPDATE가 발생할 때마다 주문 금액이 음수인지 확인CREATE TRIGGER CheckOrderAmountON OrdersAFTER INSERT, UPDATEASBEGIN IF EXISTS (SELECT 1 FROM INSERTED WHERE OrderAmount 이 트리거는 주문 테이블에 새 주문이 삽입되거나 주문이 갱신될 때마다 실행되어 주문 금액이 음수인 경우 해당 주문을 거부 이력 추적상황: 주문 데이..

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..