
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;
경기도에 위치한 식품창고 목록 출력하기 SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, NVL(FREEZER_YN, 'N') FREEZER_YN FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE '%경기%' ORDER BY WAREHOUSE_ID 이름이 없는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID 나이 정보가 없는 회원 수 구하기 (ISNULL) SELECT COUNT(USER_ID) AS USERS FROM USER_INFO WHERE AGE IS NULL NULL 처리하기 SELECT ANIMAL_TYPE, NVL(NAME, 'NO NAME'), ..
📌 WITH 절과 CTE(Common Table Expression) SQL에서 WITH 절은 공통 테이블 식(CTE, Common Table Expression)을 만들 때 사용CTE는 일시적으로 데이터를 저장하는 가상의 테이블로, 복잡한 쿼리를 쉽게 작성하고 가독성을 높이는 데 유용✅ 1. CTE 기본 개념CTE는 서브쿼리(하위 쿼리)와 비슷하지만, 더 명확하고 재사용이 가능💡 CTE의 특징실행 시 일시적으로 유지되는 가상의 테이블여러 번 사용할 수 있지만 쿼리 실행 후 사라짐재귀 쿼리(Recursive Query)도 가능✅ 2. CTE 기본 문법WITH CTE_Name AS ( -- CTE 정의 (조회할 데이터) SELECT Column1, Column2 FROM SomeTabl..
OPENQUERY원격 서버에 대한 쿼리를 실행하고 결과를 가져오는 데 사용분산 데이터베이스 환경에서 다른 데이터베이스 서버 또는 소스에 대한 쿼리를 실행하고 데이터를 가져올 때 유용 다른 데이터베이스 서버 또는 소스와의 데이터 통합 및 조회 작업을 수행 OPENQUERY ( linked_server , 'query' )linked_server: 연결된 서버(Linked Server)의 이름연결된 서버는 현재 SQL Server와 다른 데이터베이스 서버 또는 데이터 소스와의 연결을 설정하는 데 사용'query': 실행할 원격 쿼리, 이 부분에는 연결된 서버에서 실행할 SQL 쿼리가 들어감
자동 증가 열(IDENTITY)자동 증가 열은 테이블의 열(column) 중 하나를 정의할 때 사용이 열의 값을 데이터가 삽입될 때마다 자동으로 증가시킴주로 기본 키(primary key)로 사용되며, 각 행(row)마다 고유한 값을 가짐예시 ID 열은 자동으로 1부터 시작하여 1씩 증가하는 값을 가짐 CREATE TABLE MyTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name VARCHAR(50)); 시퀀스시퀀스는 별도의 객체로 정의되며, 테이블과는 독립적으로 존재시퀀스는 데이터를 생성하는 데 사용되는 일련 번호를 생성하는 데 주로 사용시퀀스를 사용하면 여러 테이블에서 같은 시퀀스를 공유하거나 복잡한 값 생성 규칙을 정의할 수 있음예를 들어, 아래와 같이 시..
📌 SQL Server OPTION(RECOMPILE) ✅ OPTION(RECOMPILE)은 쿼리 실행 시마다 새로운 실행 계획을 생성하는 옵션✅ 매개변수 값이 자주 변하거나, 동적 SQL을 사용할 때 최적의 실행 계획을 유지하기 위해 사용✅ SQL Server가 매번 최신의 테이블 통계 또는 조인 조건과 같은 환경 변경 사항을 고려하여 최적의 실행 계획을 생성✅ 언제 사용해야 할까?✔️ 매개변수 값이 자주 변경될 때 → 특정 값에 최적화되지 않도록 방지✔️ WHERE 절이나 JOIN 조건이 동적으로 바뀔 때 → 실행 계획을 최신 상태로 유지✔️ 쿼리 실행 성능이 일정하지 않을 때 → 최적화된 실행 계획을 적용✅ 사용 예제SELECT * FROM OrdersWHERE OrderDate >= @Star..
🍩 윈도우함수 OLAP 함수라고도 한다. OLAP란, OnLine Analytical Processing의 약자로, 데이터베이스를 사용한 실시간(온라인) 데이터 분석처리 윈도우 함수는 이 OLAP 용도로 사용하기 위해 표준 SQL에 추가된 기능 결과 집합의 여러 행에 대한 계산을 수행하는 데 사용 일반적으로 정렬된 데이터에 대해 작동하며, 데이터베이스 질의의 윈도우(또는 창)에 대해 계산을 수행 효율적인 데이터 분석 및 집계 작업을 수행 ROW_NUMBER(): 결과 집합의 각 행에 순서 번호를 할당합니다. 주로 정렬된 결과에서 특정 순서의 행을 선택할 때 사용됩니다. SELECT ROW_NUMBER() OVER(ORDER BY Salary DESC) AS RowNum, EmployeeName, Sala..
CROSS APPLY → INNER JOIN OUTER APPLY → OUTTER JOIN 그러나, CROSS APPLY와 INNER JOIN, 그리고 OUTER APPLY와 OUTER JOIN은 같은 결과를 반환하지 않습니다. CROSS APPLY vs. INNER JOIN: CROSS APPLY: 왼쪽 테이블의 각 행에 대해 오른쪽 테이블의 서브쿼리를 실행하고, 조건에 맞는 결과를 반환합니다. 이 때, 오른쪽 서브쿼리는 왼쪽 테이블의 각 행에 대해 실행되므로, 왼쪽 테이블의 모든 행에 대한 조인이 발생할 수 있습니다. 따라서, 두 테이블 간의 관계가 매우 밀접하게 형성됩니다. INNER JOIN: 두 테이블 간의 조인 조건에 맞는 행만 반환합니다. INNER JOIN은 두 테이블 간의 관계를 확인하고..
다른 두 개체나 데이터 집합 간의 상호 관계를 기록하고 매핑하는 데 사용되는 테이블 관계 형성두 가지 서로 다른 데이터 집합 간의 관계를 정의하고 관리하는 데 사용됩니다. 예를 들어, 데이터베이스에서는 매핑 테이블을 사용하여 두 테이블 간의 관계를 나타내는 데 활용합니다.외래 키 관리매핑 테이블은 다른 테이블에서 가져온 데이터를 참조하거나 관리할 때 외래 키(Foreign Key) 관계를 설정하는 데 사용됩니다. 이를 통해 데이터의 일관성과 무결성을 유지할 수 있습니다.다대다 관계 처리두 엔티티(데이터 요소) 간의 다대다(N:N) 관계를 다룰 때 매핑 테이블을 사용합니다.이 테이블은 두 엔티티 간의 관계를 중개하고 추가 정보(예: 타임스탬프, 상태)를 저장할 수 있습니다.데이터 통합서로 다른 데이터 ..