SQL 16

SQL - DATE_FORMAT

날짜 데이터 (date_type)   칼럼명 앞에 아이콘을 확인하자 ! 문자열 데이터는 A-Z, 날짜 데이터는 시계 아이콘이 있다. -연, 월, 일, 시, 분, 초 등의 값을 모두 갖고 있으며 목적에 따라  '월', '주', '일' 등으로 포맷 변경 가능 !  년 : Y(4자리), y(2자리)월 : M, m일 : d, e요일 : w   날짜 데이터, 년, 월. 일, 요일 칼럼으로 포맷 변경SELECT DATE(date) date_type, DATE_FORMAT(DATE(date), '%Y') "년", DATE_FORMAT(DATE(date), '%m') "월", DATE_FORMAT(DATE(date), '%d') "일", DATE_FORMAT(DATE(date..

SQL 2024.12.02

SQL - Window Function(RANK, SUM OVER)

Window Function;데이터베이스 내에서 특정 행(row)의 값이 전체 데이터셋이나 특정 부분집합(partition)의 다른 행과 비교되거나 연관 지어질 때 유용하게 사용되는 함수 여러 행을 참조하면서도, 각 행의 결과를 반환하기 때문에 일반적인 집계 함수(Aggregate Function)와는 다름    특징행별 결과 반환: 데이터의 각 행에 대해 계산 결과 반환PARTITION BY: 데이터를 그룹화하여 그룹 내에서만 연산을 수행ORDER BY: 그룹 내에서 순서를 지정하여 정렬한 뒤 연산 수행OVER 절: Window Function의 범위와 동작 정의  주요 Window FunctionRANK(), DENSE_RANK(), ROW_NUMBER()데이터를 정렬한 후 각 행의 순위를 반환ROW..

SQL 2024.12.01

SQL - Pivot Table

Pivot table2개 이상의 기준으로 데이터를 집계할 때, 보기 쉽게 배열하여 보여주는 테이블  Pivot table의 기본 구조 구분 컬럼집계 기준데이터  데이터 테이블들을 가지고 Pivot Table뷰를 만든다 -> Pivot View 구조를 만든다 예)음식점별로 15시에서 20시까지 시간별 주문건수를 집계해본다. 1. 결제테이블에서 주문시간의 15시-20시의 시/분/초 중 시간만 SUBSTRING하고2. 음식점명, 시간대를 기준으로 주문건수 데이터를 조회한다. SELECT f.restaurant_name, SUBSTRING(p.time, 1, 2) hh, COUNT(1) cnt_orderFROM food_orders f INNER JOIN payments p ON f.ord..

SQL 2024.11.28

SQL - 'Not given', NULL다루기

1. 제외해주기 -> 0으로 간주(null) SELECT column_1, IF(column_2'Not given', value, null) null_columnFROM tableGROUP BY 1 Not given이라는 값을 가진 데이터가 아닌 경우에는 value를 그대로, Not gien이라는 값은 null로 바꿔준다.(0으로 간주됨) IS NOT NULL을 사용하여 null 이 아닌 경우의 데이터만 조회할 수도 있다.   2. 다른 값을 대신 사용하기 사용할 수 없는 값 대신 다른 값을 대체해서 사용하는 방법(대체 값의 예 :  평균값, 중앙값 등 대표값) SELECT column_1, COALESCE(null_column, 대체값) "null제거"FROM (SELECT column_1, IF(co..

SQL 2024.11.26

SQL - JOIN(필요한 데이터가 서로 다른 테이블에 있을 때)

LEFT JOIN : 공통 컬럼(키값)을 기준으로, 하나의 테이블에 값이 없더라도 모두 조회INNER JOIN : 공통 컬럼(키값)을 기준으로, 두 테이블에 모두 있는 값만 조회 -- LEFT JOINSELECT 조회 할 컬럼FROM 테이블1 a LEFT JOIN 테이블2 b ON a.공통컬럼명=b.공통컬럼명--INNER JOINSELECT 조회 할 컬럼FROM 테이블1 a INNER JOIN 테이블2 b ON a.공통컬럼명=b.공통컬럼명 *공통컬럼은 컬럼을 묶어주기 위한 '공통 값'이기 때문에 각 컬럼명은 달라도 됨.예) 테이블1.고객ID=테이블2.고객아이디

SQL 2024.11.26

SQL - Subquery(여러번의 연산 수행)

여러번의 연산 수행조건문에 연산 결과 사용조건에 Query 결과 사용 SELECT column1, splecial_columnFROM (/* subquery */ SELECT column1, column2 special_column FROM table1 ) a=> 마지막 a는 서브쿼리의 alias로 넣어줌(메인 쿼리가 서브쿼리의 결과를 사용할 때 필수적) SELECT column1, column2FROM table1WHERE column1 = (SELECT col1 FROM table2)    사용예시) SELECT order_id, restaurant_name, IF(over_time>0, over_time, 0) over_timeFROM ( SELECT order_i..

SQL 2024.11.24

SQL - IF, CASE (조건에 따른 포맷 변경)

IF음식 타입이 'Korean'일 때는 '한식', 'Korean'이 아닌 경우에는 '기타'주소의 시·도 중 '경기도'는 '경기도'로, '경기도'가 아닌 경우는 앞의 두 글자만 사용하고 싶을 때음식의 단가를 주문 수량이 1일 때는 음식 가격, 주문 수량이 2개 이상일 때는 음식가격/주문수량으로 계산하기if(조건, 조건을 충족할 때, 조건을 충족하지 못할 때)(마치 삼항연산자같은ㅎㅎㅎ)   사용예시) SELECT restaurant_name, cuisine_type "원래 음식 타입", IF(cuisine_type='Korean', '한식', '기타') "음식 타입"FROM food_orders SELECT addr "원래 주소", IF(addr like '%평택군%', REPLACE(ad..

SQL 2024.11.22

SQL - REPLACE, SUBSTRING, CONCAT(문자 포맷 가공하기)

REPLACE  SELECT column_name, REPLACE(column_name, '현재값', '바꿀값')FROM table_nameWHERE column_name like '%현재값%'  사용예시)  food_orders 테이블의 restaurant_name컬럼에서 'Blue Ribbon'이 들어간 상점명을 'Pink Ribbon'으로 바꾸기SELECT restaurant_name "원래 상점명", REPLACE(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"FROM food_ordersWHERE restaurant_name like '%Blue Ribbon%'    SUBSTRING(STUBSTR)  SELECT column_name SUBSTR(column_name..

SQL 2024.11.22

SQL - ORDER BY (오름차순, 내림차순)

SELECT 카테고리컬럼명, SUM(계산 칼럼명)FROM table_nameGROUP BY 카테고리컬럼명ORDER BY 정렬을원하는컬럼명 table_name의 카테고리컬럼을 value합계 기준으로 오름차순정렬   사용예시)  음식 종류별 주문금액 합계기준으로 오름차순 정렬 SELECT cuisine_type, SUM(price) sum_of_priceFROM food_ordersGROUP BY cuisine_typeORDER BY SUM(price)    음식점별 주문 금액 객단가 내림차순 정렬 SELECT restaurnat_name, AVG(name) avg_priceFROM food_ordersGROUP BY restaurant_nameORDER BY AVG(price)DESC 내림차순  =>  D..

SQL 2024.11.21

SQL - GROUP BY (범주별 연산)

SELECT 카테고리컬럼명, SUM(계산컬럼명)FROM table_nameGROUP BY 카테고리컬럼명 원하는 컬럼을 카테고리화 하여 해당컬럼 value들을 모두 더한 값을 조회    사용 예시) 음식 종류별 주문 금액 합계 SELECT cisine_type, SUM(price) sum_of_priceFROM food_ordersGROUP BY cuisine_type   음식점별 평균객단가SELECT restaurant_name, AVG(price) avg_priceFROM food_ordersGROUP BY restaurant_name

SQL 2024.11.21
728x90
반응형