DB41 프로그래머스 ORACLE 가격이 제일 비싼 식품의 정보 출력하기 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); DB/쿼리 문제풀이 2023. 10. 6. 프로그래머스 ORACLE 자동차 평균 대여 기간 구하기 정답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일간의 기간입니다.일반적으로 두 날짜 간의 차이를 계산할 때는, 시작 날짜와 종료 날짜를 모두 포함하여 계산하는 것이 정확한.. DB/쿼리 문제풀이 2023. 10. 6. 프로그래머스 ORACLE 조건에 부합하는 중고거래 상태 조회하기 정답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 DB/쿼리 문제풀이 2023. 10. 6. 프로그래머스 ORACLE 자동차 대여 기록에서 장기/단기 대여 구분하기 정답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; DB/쿼리 문제풀이 2023. 10. 6. 프로그래머스 ISNULL ORACLE 경기도에 위치한 식품창고 목록 출력하기 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'), .. DB/쿼리 문제풀이 2023. 10. 6. WITH 절 WITH 임시테이블로 사용됨 SELECT * FROM CTE_Name 으로 쓰면된다 SQL 쿼리에서 WITH 절은 일반적으로 공통 테이블 식(Common Table Expression 또는 CTE)을 정의하기 위해 사용 CTE는 쿼리 내에서 임시 테이블처럼 사용되는 이름이 있는 결과 집합을 생성하는 방법 제공 구조 WITH CTE_Name (CTE_Column1, CTE_Column2, ...) AS ( -- CTE 정의를 포함하는 서브쿼리 SELECT ... FROM ... WHERE ... ) 각 요소의 역할 CTE_Name: CTE의 이름을 지정합니다. (CTE_Column1, CTE_Column2, ...): 선택적으로 CTE에 포함될 열(컬럼) 목록을 정의,생략가능 AS: CTE 정의의 시작다... DB/쿼리 2023. 10. 5. OPENQUERY OPENQUERYMicrosoft SQL Server에서 사용되는 T-SQL 함수 중 하나로,원격 서버에 대한 쿼리를 실행하고 결과를 가져오는 데 사용됩니다.이 함수는 분산 데이터베이스 환경에서 다른 데이터베이스 서버 또는 소스에 대한 쿼리를 실행하고데이터를 가져올 때 유용합니다. OPENQUERY 함수는 다음과 같은 형식을 가집니다:OPENQUERY ( linked_server , 'query' )linked_server: 연결된 서버(Linked Server)의 이름 또는 별명을 나타냅니다. 연결된 서버는 현재 SQL Server와 다른 데이터베이스 서버 또는 데이터 소스와의 연결을 설정하는 데 사용됩니다.'query': 실행할 원격 쿼리를 나타냅니다. 이 부분에는 연결된 서버에서 실행할 SQL 쿼.. DB/etc 2023. 10. 5. MSSQL 자동 증가 열(IDENTITY)과 시퀀스(Sequence) 자동 증가 열(IDENTITY)자동 증가 열은 테이블의 열(column) 중 하나를 정의할 때 사용이 열의 값을 데이터가 삽입될 때마다 자동으로 증가시킴주로 기본 키(primary key)로 사용되며, 각 행(row)마다 고유한 값을 가짐예시 ID 열은 자동으로 1부터 시작하여 1씩 증가하는 값을 가짐 CREATE TABLE MyTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name VARCHAR(50)); 시퀀스시퀀스는 별도의 객체로 정의되며, 테이블과는 독립적으로 존재시퀀스는 데이터를 생성하는 데 사용되는 일련 번호를 생성하는 데 주로 사용시퀀스를 사용하면 여러 테이블에서 같은 시퀀스를 공유하거나 복잡한 값 생성 규칙을 정의할 수 있음예를 들어, 아래와 같이 시.. DB/etc 2023. 10. 5. MSSQL OPTION(RECOMPILE) OPTION(RECOMPILE)해당 옵션을 사용하면 쿼리가 실행될 때마다 실행 계획을 재 컴파일하는 것을 지시합니다.이렇게 하면 SQL Server가 매번 최신의 테이블 통계 또는 조인 조건과 같은 환경 변경 사항을 고려하여 최적의 실행 계획을 생성할 수 있습니다. OPTION(RECOMPILE)을 사용하는 상황은 다음과 같습니다:매개 변수 값이 자주 변경되는 경우 이 매개 변수 값을 고려한 최적의 실행 계획을 유지하기 위해 OPTION(RECOMPILE)을 사용할 수 있습니다.조건부 논리를 가진 동적 SQL 동적 SQL을 사용하고 조건부로 WHERE 절이나 조인 조건이 변경되는 경우, 실행 계획을 동적으로 조정하기 위해 OPTION(RECOMPILE)을 활용할 수 있습니다.특정 상황에서 최적의 실행 .. DB/etc 2023. 10. 5. 윈도우함수 🍩 윈도우함수 OLAP 함수라고도 한다. OLAP란, OnLine Analytical Processing의 약자로, 데이터베이스를 사용한 실시간(온라인) 데이터 분석처리 윈도우 함수는 이 OLAP 용도로 사용하기 위해 표준 SQL에 추가된 기능 결과 집합의 여러 행에 대한 계산을 수행하는 데 사용 일반적으로 정렬된 데이터에 대해 작동하며, 데이터베이스 질의의 윈도우(또는 창)에 대해 계산을 수행 효율적인 데이터 분석 및 집계 작업을 수행 ROW_NUMBER(): 결과 집합의 각 행에 순서 번호를 할당합니다. 주로 정렬된 결과에서 특정 순서의 행을 선택할 때 사용됩니다. SELECT ROW_NUMBER() OVER(ORDER BY Salary DESC) AS RowNum, EmployeeName, Sala.. DB/쿼리 2023. 10. 5. APPLY 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은 두 테이블 간의 관계를 확인하고.. DB/쿼리 2023. 10. 5. 매핑 테이블(mapping table) 다른 두 개체나 데이터 집합 간의 상호 관계를 기록하고 매핑하는 데 사용되는 테이블 관계 형성두 가지 서로 다른 데이터 집합 간의 관계를 정의하고 관리하는 데 사용됩니다. 예를 들어, 데이터베이스에서는 매핑 테이블을 사용하여 두 테이블 간의 관계를 나타내는 데 활용합니다.외래 키 관리매핑 테이블은 다른 테이블에서 가져온 데이터를 참조하거나 관리할 때 외래 키(Foreign Key) 관계를 설정하는 데 사용됩니다. 이를 통해 데이터의 일관성과 무결성을 유지할 수 있습니다.다대다 관계 처리두 엔티티(데이터 요소) 간의 다대다(N:N) 관계를 다룰 때 매핑 테이블을 사용합니다.이 테이블은 두 엔티티 간의 관계를 중개하고 추가 정보(예: 타임스탬프, 상태)를 저장할 수 있습니다.데이터 통합서로 다른 데이터 .. DB/etc 2023. 10. 5. 이전 1 2 3 4 다음