3개 이상 쿼리를 조회할때
·
SQL 정리
문제 설명다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블과 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 자동차 종류 별 대여 기간 종류 별 할인 정책 정보를 담은 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블 입니다.CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다.Column nameTypeNullableCAR_IDINTEGERFALSECAR_TYPEVARCHAR(255)F..
COALESCE
·
SQL 정리
COALESCE 함수는 SQL에서 매우 유용한 함수로, 여러 값 중에서 NULL이 아닌 첫 번째 값을 반환하는 데 사용됩니다. 기본적으로 COALESCE는 여러 인수를 받아, 가장 먼저 NULL이 아닌 값을 찾을 때까지 인수들을 순차적으로 검사합니다.기본 구문 COALESCE(expression1, expression2, ..., expressionN)expression1, expression2, ..., expressionN: 검사할 값들입니다. 이들 중 첫 번째로 NULL이 아닌 값을 반환합니다.예제단일 값 처리:이 쿼리는 'Hello'를 반환합니다. 왜냐하면 NULL이 아닌 첫 번째 값이 'Hello'이기 때문입니다.SELECT COALESCE(NULL, NULL, 'Hello', 'World') ..
시간대를 나누는 쿼리
·
SQL 정리
문제 설명ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다.NAMETYPENULLABLEANIMAL_IDVARCHAR(N)FALSEANIMAL_TYPEVARCHAR(N)FALSEDATETIMEDATETIMEFALSENAMEVARCHAR(N)TRUESEX_UPON_OUTCOMEVARCHAR(N)FALSE보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했..
오프라인/온라인 판매 데이터 통합하기(IFNULL, UNION)
·
SQL 정리
문제 설명다음은 어느 의류 쇼핑몰의 온라인 상품 판매 정보를 담은 ONLINE_SALE 테이블과 오프라인 상품 판매 정보를 담은 OFFLINE_SALE 테이블 입니다. ONLINE_SALE 테이블은 아래와 같은 구조로 되어있으며 ONLINE_SALE_ID, USER_ID, PRODUCT_ID, SALES_AMOUNT, SALES_DATE는 각각 온라인 상품 판매 ID, 회원 ID, 상품 ID, 판매량, 판매일을 나타냅니다.Column nameTypeNullableONLINE_SALE_IDINTEGERFALSEUSER_IDINTEGERFALSEPRODUCT_IDINTEGERFALSESALES_AMOUNTINTEGERFALSESALES_DATEDATEFALSE동일한 날짜, 회원 ID, 상품 ID 조합에 대해..
저자 별 카테고리 별 매출액 집계하기
·
SQL 정리
문제 설명다음은 어느 한 서점에서 판매중인 도서들의 도서 정보(BOOK), 저자 정보(AUTHOR) 테이블입니다.BOOK 테이블은 각 도서의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.Column nameTypeNullableDescriptionBOOK_IDINTEGERFALSE도서 IDCATEGORYVARCHAR(N)FALSE카테고리 (경제, 인문, 소설, 생활, 기술)AUTHOR_IDINTEGERFALSE저자 IDPRICEINTEGERFALSE판매가 (원)PUBLISHED_DATEDATEFALSE출판일AUTHOR 테이블은 도서의 저자의 정보를 담은 테이블로 아래와 같은 구조로 되어있습니다.Column nameTypeNullableDescriptionAUTHOR_IDINTEGERFALSE저자..
연속 서브쿼리
·
SQL 정리
문제 설명다음은 고객의 정보를 담은 MEMBER_PROFILE테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다.Column nameTypeNullableMEMBER_IDVARCHAR(100)FALSEMEMBER_NAMEVARCHAR(50)FALSETLNOVARCHAR(50)TRUEGENDERVARCHAR(1)TRUEDATE_OF_BIRTHDATETRUEREST_REVIEW 테이블은 다음과 같으며 REVIEW_ID, REST_ID, MEMBER_ID, REVIEW_SCORE, ..
WITH절 문제 예시
·
SQL 정리
문제 예시 다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. Column nameTypeNullableBOARD_IDVARCHAR(5)FALSEWRITER_IDVARCHAR(50)FALSETITLEVARCHAR(100)FALSECONTENTSVARCHAR(1000)FALSEPRICENUMBERFALSECREATED..
DATEDIFF
·
SQL 정리
SQL에서 DATEDIFF 함수는 두 날짜 사이의 차이를 계산하여 반환하는 함수이다. 주로 두 날짜 간의 일수 차이를 구할 때 사용된다.  구조DATEDIFF(date1, date2)​ 설명:date1과 date2는 비교할 두 날짜이다DATEDIFF(date1, date2)는 date1과 date2 사이의 일수를 반환한다  반환 값은 date1이 date2보다 크면 양수, 작으면 음수이다.예제: SELECT DATEDIFF('2024-08-01', '2024-07-01') AS DaysDifference;​  이 쿼리는 2024년 7월 1일과 2024년 8월 1일 사이의 일수 차이를 계산합니다. 결과는 31입니다.DATEDIFF(datepart, startdate, enddate)datepart는 날짜 ..
with
·
SQL 정리
with절이란?Common Table Expression (CTE)을 정의하는 데 사용CTE는 서브쿼리와 비슷하지만 더 읽기 쉽고 복잡한 쿼리를 작성하고 유지 보수하는 데 도움이 됨CTE는 주로 임시 결과 집합을 정의하고 이를 주요 쿼리에서 여러 번 참조할 수 있도록 함CTE는 가독성을 높이고 쿼리 구조를 단순화하는 데 유용함 CTE 기본 구조WITH cte_name AS ( -- CTE 정의 (서브쿼리) SELECT ...)-- 주요 쿼리SELECT ...FROM cte_name  코드로 보는 예제아래 예제는 CTE를 사용하여 직원 테이블에서 각 부서의 평균 급여를 계산하고, 이를 주요 쿼리에서 참조하여 평균 급여가 특정 값 이상인 부서만 선택하는 예제이다. WITH DepartmentAve..
OUTER, 테이블 여러개를 JOIN해야되는 경우
·
SQL 정리
테이블 여러개를 JOIN해야되는 경우SELECT a.columnA, b.columnB, c.columnCFROM TableA aINNER JOIN TableB b ON a.key = b.foreignKeyAINNER JOIN TableC c ON b.key = c.foreignKeyB; LEFT JOIN을 사용한 예제 SELECT t1.id AS Table1_ID, t1.columnA AS Table1_ColumnA, t2.id AS Table2_ID, t2.columnB AS Table2_ColumnB, t3.id AS Table3_ID, t3.columnC AS Table3_ColumnCFROM Table1 t1LEFT ..