내일배움캠프/SQL 22

[SQL]날짜 포맷과 조건 (포맷 함수)

날짜 데이터의 이해문자타입, 숫자타입과 같이 날짜 데이터도 특정한 타입을 가지고 있습니다.년, 월, 일, 시, 분, 초 등의 값을 모두 갖고 있으며 목적에 따라 ‘월’, ‘주’, ‘일’ 등으로 포맷을 변경할 수도 있습니다.아래와 같은 형식의 데이터라면 날짜로 변경 가능합니다.[실습1]날짜 데이터의 여러 포맷1-1. yyyy-mm-dd 형식의 컬럼을 date type 으로 변경하기SELECT DATE(date) date_type, dateFROM payments1-2.date type 을 date_format 을 이용하여 년, 월, 일, 주 로 조회해보기기본구조SELECT DATE_FORMAT([칼럼명],[형식])형식년 : Y (4자리), y(2자리)월 : M, m일 : d, e요일 : wSEL..

[SQL]Window Function_RANK, SUM

Window함수란? : 각 행의 관계를 정의하기 위한 함구로 그룹 내의 연산을 쉽게 만들어 준다. 예시)한식 식당 중에서 주문건수가 많은 순으로 순위를 매기고 싶을 때한식 식당 전체 주문건수 중에서 A식당이 차지하는 비율을 알고 싶을 때2건 이상 주문을 한 소비자 중에, 처음 주문한 식당과 2번째로 주문한 식당을 같이 조회하고 싶을 때→ 기본 SQL 구조로 해결할 수도 있지만 여러 Subquery문을 이용해야 한다.  Window Function의 기본 구조window_function(argument) over (partition by 그룹 기준 컬럼 order by 정렬 기준)window_function : 기능 명을 사용해줍니다. (sum, avg 와 같이 기능명이 있습니다)argument : 함수에..

[SQL]피벗테이블 만들기

Pivot tavle (피벗테이블)이란: 2개 이상의 기준을 가지고 있는 데이터를 보다 쉽게 배열하여 보여주는 형식   [실습1] 음식점별 시간별 주문건수 Pivot Table 뷰 만들기 (15~20시 사이, 20시 주문건수 기준 내림차순)select restaurant_name, max(if(hh='15', cnt_order, 0)) "15", max(if(hh='16', cnt_order, 0)) "16", max(if(hh='17', cnt_order, 0)) "17", max(if(hh='18', cnt_order, 0)) "18", max(if(hh='19', cnt_order, 0)) "19", max(if(hh='20', cnt..

[SQL]데이터에서 예상하지 못한 값이 나왔을 때 (이상한 값, 값이 없음 등)

1) 데이터가 없을 때의 연산 결과 변화 케이스[방법1] 없는 값을 제외해주기없는 값을 0으로 계산하거나, 없는 데이터로 간주하기SELECT restaurant_name, AVG(rating) avg_rating, AVG(IF(rating'Not given', rating, NULL)) -- 는'아니다', NULL'없는 값으로 간주'FROM food_ordersGROUP BY 1/* 그냥 AVG(rating)로 계산했을 때는Not given값을 0으로 계산하는 반면, NULL로 지정했을 경우 제외시킴.데이터를 불러올 때 애초에 null값은 불러오지 않기select a.order_id, a.customer_id, a.restaurant_name, a.price, ..

[SQL] 다른 테이블 합치기 JOIN

JOIN이 필요한 경우필요한 데이터가 서로 다른 테이블에 있을 때예) 주문 가격은 주문테이블에 있지만, 어떤 수단으로 결제를 했는지는 결제테이블에 있어요 JOIN의 기본 원리와 종류기본적으로 엑셀의 Vlookup과 유사하다.두 테이블이 공통으로 갖고 있는 컬럼을 찾는 것이 중요.합치는 방식에 따른 종류는 두가지가 있다.LEFT JOIN공통 컬럼을 기준으로 하나의 테이블에 값이 없더라도 모두 조회.예) A테이블 : {1,2,3} / B테이블 : {2,3,4} 의 데이터가 있을 때LEFT JOIN을 사용하면 A + (B와A의 공통된 값) 인 {1,2,3}이 나온다.INNER JOIN공통 컬럼을 기준으로, 두 테이블 모두에 있는 값만 조회한다. A와 B의 교집합.예) A테이블 : {1,2,3} / B테이블 :..

728x90