데이터 차례로 확인해보기 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..
🍩파티션ROW_NUMBER() OVER(PARTITION BY MP.ORGN_CD, MP.BCD_CD ORDER BY ISNULL(MP.MDATE, MP.CDATE) DESC) 먼저, PARTITION BY MP.ORGN_CD, MP.BCD_CD 부분에 따라 결과 집합이 파티션(그룹)으로 분할됩니다.이 파티션은 MP.ORGN_CD와 MP.BCD_CD 값이 동일한 행들의 그룹을 형성합니다.다음으로, ORDER BY ISNULL(MP.MDATE, MP.CDATE) DESC 부분에 따라 각 파티션 내에서 행들이 정렬됩니다. 정렬은 MP.MDATE 값을 기준으로 하며, 만약 MP.MDATE가 NULL이면 MP.CDATE 값을 사용합니다. 정렬은 내림차순으로 이루어집니다.각 파티션 내에서 정렬된 순서에 따라 R..
문자열을 수정하는 데 사용일반적으로 특정 위치부터 문자열을 대체하거나 제거할 때 사용 가정: "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..