SQL 에서 연산 기호를 사용할 수 있다.
연산자 | 의미 |
---|---|
+ | 더하기 |
- | 빼기 |
* | 곱하기 |
/ | 나누기 |
% | 나머지 |
엑셀 함수는 엑셀에서 범위를 지정하여 함수를 사용한다면 SQL은 컬럼을 기준으로 함수가 사용된다.
함수 | 의미 |
---|---|
SUM(컬럼) | 합계 |
AVG(컬럼) | 평균 |
COUNT(컬럼) | 갯수 |
MIN(컬럼) | 최솟값 |
MAX(컬럼) | 최댓값 |
COUNT(컬럼)은 COUNT(1), COUNT(*)로 사용할 수 있다.
COUNT 함수는 DISTINCT와 함께 사용할 수 있다.
DISTINCT는 중복된 값을 1개로 취급하는 것으로 COUNT와 함께 사용하여 중복을 제거한 값의 갯수를 구할 수 있다.
데이터를 기준에 맞춰 그룹으로 묶어서 데이터를 처리하는 것이다.
카테고리라 이해하면 될 듯
GROUP BY 행에 있는 컬럼은 SELECT 문에도 있어야 한다.
GROUP BY에 컬럼명이 아닌 SELECT의 컬럼의 위치(숫자)를 써도 된다.
SELECT 컬럼1
FROM 테이블
GROUP BY 컬럼1SELECT 컬럼1, 컬럼2
FROM 테이블
GROUP BY 1
데이터를 기준에 맞춰 오름차순, 내림차순으로 정렬한다.
종류 | 구문 |
---|---|
오름차순 | ASC(기본값), 생략가능 |
내림차순 | DESC |
SELECT 컬럼
FROM 테이블
GROUP BY 컬럼
ORDER BY 컬럼 아무거나
음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로(내림차순) 정렬하기
SELECT : 음식 종류(GROUP BY를 써야함), 가장 높은 금액, 가장 낮은 금액
FROM : food_orders
GROUP BY : 음식 종류별
ORDER BY : 가장 낮은 주문금액 순서
SELECT cuisine_type,
MIN(price) as min_price,
MAX(price) as max_price
FROM food_orders
GROUP BY cuisine_type
ORDER BY min_price DESC
특정 문자를 다른 문자로 바꾸는 것
REPLACE(컬럼, 현재 값, 바꿀 값)
컬럼의 데이터에서 필요한 부분만 가져올 때 사용
SUBSTR(컬럼, 시작 위치, 글자 수)
시작 위치는 1부터 시작
글자 수는 시작 위치로부터 필요한 글자 수, 시작 위치부터 마지막 문자까지 필요하다면 생략
여러 컬럼에서 데이터를 가져와 하나로 만드는 것
CONCAT(값1, 값2, 값3, ....)
값으로는 컬럼 외에도 한글, 영어, 숫자, 특수문자를 사용할 수 있다.(' ' 사용!!!)
조건에 참일 경우와 거짓일 경우에 적용할 방법을 지정할 수 있다.
IF(조건, 조건이 참일 때, 조건이 거짓일 때)
조건을 여러개 지정해야 할 때, 여러번의 IF 문을 적용한 효과를 가짐
CASE
WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
ELSE 값3
END
숫자인 줄 알고 SUM, AVG 등 함수를 사용했지만 'data type' 오류가 생기는 경우가 있다. 이는 해당 컬럼을 문자형 데이터로 정의하고 사용중이기 때문이다. CAST 함수를 사용해 원하는 데이터 타입으로 변환할 수 있다.
CAST('데이터' AS 데이터 타입)
다음의 조건으로 배달시간이 늦었는지 판단하는 값을 만들어주세요.
-주중 : 25분 이상
-주말 : 30분 이상
SELECT : 주문 번호, 가게이름, 주문한 요일, 배달시간, 지연여부 (결과 스크린샷)
FROM : food_orders
CASE
주문한 요일이 주중이고 배달시간이 25분 이상 이거나 주문한 요일이 주말이고 배달시간이 30분 이상일 때 LATE
그 외에는 On-time
SELECT order_id,
restaurant_name,
day_of_the_week,
delivery_time,
CASE
when (day_of_the_week='Weekday' and delivery_time>=25) or (day_of_the_week='Weekend' and delivery_time>=30) then 'Late'
else 'On-time'
END '지연여부'
FROM food_orders fo