숫자 연산 예시
select food_preparation_time,
delivery_time,
food_preparation_time + delivery_time as total_time
from food_orders
이런식으로 컬럼명 + 컬럼명 해도 SUM 함수처럼 나오긴 함.
- SUM, AVG
select sum(food_preparation_time) total_food_preparation_time,
avg(delivery_time) avg_delivery_time
from food_orders
SUM(컬럼명)은 컬럼 데이터의 총합을 알려달라는 뜻.
SUM함수 안에 컬럼명을 적고 뒤에 원하는 별명을 설정한 모습
이렇게 하면 FOOD_PREPARATION_TIME 컬럼의 총합이 TOTAL_FOOD_PREPARATION_TIME 이란 별명으로
결과 값이 나온다.
AVG(컬럼명)은 컬럼 데이터의 평균을 알려달라는 뜻.
AVG 함수도 마찬가지로 안에 컬럼명 적고 뒤에 원하는 별명을 설정한 모습.
DELIVERY_TIME 컬럼의 평균값이 AVG_DELIVERY_TIME이란 별명으로 결과 값이 나온다.

- COUNT
select count(1) count_of_orders,
count(distinct customer_id) count_of_customers
from food_orders
COUNT()는 어떠한 테이블 안 컬럼의 조회되는 데이터의 갯수를 알려주는 함수이다.
COUNT(1)은 COUNT(*)과 같은 의미이며 COUNT_OF_ORDERS 컬럼의 데이터 갯수를 전부 알려달라는 뜻이다.
COUNT(DISTINCT CUSTOMER_ID)는 CUSTOMER_ID 컬럼의 데이터 중에
중복된 값을 제외한 갯수를 알려달라는 의미이다.
즉 5명이 10개 주문하면 그냥 COUNT시 10이 나와 몇명이 주문한지 모르겠지만
DISTINCT 사용시 5명이 나온다 라는 느낌이다.

- MIN, MAX
select min(price) min_price,
max(price) max_price
from food_orders
MIN(컬럼명)은 어떤 컬럼의 최소값을 구해 달라는 것이며
MIN(PRICE)는 가격 컬럼의 최솟값을 구해 달라는 것이다.
MAX(PRICE)는 반대로 최댓값이다.

GROUP BY
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
GROUP BY는 같은 값을 가진 컬럼을 하나로 묶어 준다.
FORM절 뒤에 오며 WHERE절이 존재할시 WHERE절 뒤에 써야한다.
GROUP BY 1, 2 이런식으로 해도 된다.
(위 코드 같은 경우에는 CUISINE_TYPE이 1, SUM(PRICE) AS SUM_OF_PRICE가 2이다.)
CUISIN_TYPE 컬럼에는 어떤 나라의 음식을 하는지 적혀 있으며
SUM(PRICE)는 음식의 총합 가격을 구하는 SQL문이다.
근데 뒤에 GROUP BY CUISINE_TYPE이 있으니 한식, 중식, 일식 등등 별로 나뉘게 되고 나뉜 각 컬럼을 Korean, Japanese 같이 하나의 그룹으로 묶어 주며 각 각 나뉜 곳들에서 음식의 총합 가격을 구하게 된다.
한식을 하는 가게들의 음식 총합 가격.
일식을 하는 가게들의 음식 총합 가격. 이런 느낌인 것 같다.

ORDER BY
오름차순 또는 내림차순으로 어떠한 컬럼을 정렬해 보여달라는 함수이다.
FROM절 뒤에 오며 GROUP BY 절이 존재한다면 그 뒤에 써야한다.
기본적으로는 오름차순 정렬이며 두개 이상의 컬럼을 정렬해 달라할 수 있다.
그럴 경우에는 먼저 앞에 쓴 컬럼을 정렬하고 그 다음 쓴 컬럼을 정렬하여 보여준다.
내림차순 정렬을 원할시 ORDER BY 컬럼명 DESC라고 쓰면 된다.
SELECT
*
FROM customers
ORDER BY gender, name
이럴 경우엔 GENDER 컬럼의 첫 글자를 오름차순으로 정렬한 뒤 NAME 컬럼의 첫 글자를 오름차순으로 정렬하여 모든 컬럼 데이터를 조회하게 된다.

정보 수정
- REPLACE
어떤 컬럼 데이터의 글자를 지정하여 원하는 글자로 변경하는 함수
REPLACE(컬럼명, '지정할 글자', '바꿀글자')
select restaurant_name "원래 상점명",
replace(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
from food_orders
where restaurant_name like '%Blue Ribbon%'
푸드 오더스 테이블의 RESTAURANT_NAME 컬럼을 "원래 상점명"이라는 별명으로
RESTAURANT_NAME 컬럼 데이터의 'BLUE'라는 글자는 'PINK'로 치환하여 "바뀐 상점명"이라는 별명으로 보여달라.
조건은 RESTAURANT_NAME 컬럼 데이터에 BLUE RIBBON이라는 글자가 포함된 것이다.

- SUBSTRING
어떤 컬럼의 글자를 추출하여 보여주는 함수인데 SUBSTR이라 써도 된다.
SUBSTRING(추출할 컬럼, 시작부분, 시작한 부분부터 추출할 글자 수)
만약 끝부분을 정할 수 없다면 끝부분은 생략하면 된다.
select addr "원래 주소",
substr(addr, 1, 2) "시도"
from food_orders
where addr like '%서울특별시%'
푸드 오더스 테이블의 ADDR 컬럼을 '원래 주소'라는 별명으로
ADDR컬럼의 첫번째 글자부터 두번째 글자까지 추출하는데 '시도'라는 별명으로 보여달라.
조건은 ADDR 컬럼의 서울특별시라는 글자가 포함된 데이터이다.

- CONCAT
어떤 컬럼 안의 데이터들을 이어 붙이고 싶을 때 사용하는 함수
CONCAT('붙이고 싶은 문자열', '붙이고 싶은 컬럼')
select restaurant_name "원래 이름",
addr "원래 주소",
concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'
푸드 오더스 테이블의 RESTAURANT_NAME 컬럼의 데이터를 '원래 이름'이라는 별명을 붙여 보여주고
ADDR은 '원래 주소'라는 별명을 붙여 보여주고
'[' 라는 문자 그 뒤에
ADDR의 첫번째 글자부터 두번째 글자까지 붙인 뒤,
']' 라는 문자를 뒤에 붙인다.
마지막으로 RESTAURANT_NAME 컬럼 데이터를 뒤에 붙이고 '바뀐 이름'이라는 별명으로 데이터를 보여줘이다.
조건은 ADDR 컬럼 데이터에 '서울'이라는 글자 포함이다.

'SQL,Database' 카테고리의 다른 글
| mysql에서 사용할 수 없는 값이 있을 때 / Pivot Table처럼 만들기 (0) | 2024.11.28 |
|---|---|
| Database,FIrestore (0) | 2024.11.27 |
| subquery, JOIN (0) | 2024.11.26 |
| IF, CASE (1) | 2024.11.25 |
| 별명 붙이기, WHERE, 논리연산자 (2) | 2024.11.21 |