데이터분석 study/SQL

TIL(Today I Learned) 24.06.24

justdata 2024. 6. 28. 10:53

 SQL 기초강의

 

- 1주차 강의

SQL 문이란 : DB 에서 데이터를 조회하기 위한 언어

 

SQL 문의 기본 구조

select # '데이터 조회' 의 명령어로 필수 구문
from   # '어디에서 데이터를 조회할까' 의 명령어로 필수 구문 
where  # 조건을 지정해주는 구문

 

  • 조건을 지정하는 방법
    • 비교연산자 : <, >, =, <>
    • 다양한 구문 : IN, BETWEEN, LIKE
      • IN 같은 경우 여러 조건을 나타내는 약어 or 과 같다
      • NOT IN : IN 목록의 값이 아닌 모든 레코드 반환
    • 여러가지 조건의 적용 : AND, OR, NOT

 

- 2주차 강의

SQL 에서는 계산의 편의를 위해 함수를 제공

  • 함수 종류
    • 합계 : SUM(컬럼)
    • 평균 : AVG(컬럼)
  • 사용 예시 
select sum(food_preparation_time) total_food_preparation_time,
       avg(delivery_time) avg_food_preparation_time
from food_orders

 

  • 전체 데이터의 갯수 구하기
    •   데이터 갯수 : COUNT(컬럼) * 컬럼명 대신 1 혹은 * 사용 가능
    •  몇개의 값을 가지고 있는지 구할 때 : DISTINCT
  • 사용 예시 
select count(1) count_of_orders,
       count(distinct customer_id) count_of_customers
from food_orders

 

  • 데이터의 범위, 최솟값과 최댓값 구하기
    • 최솟값 : MIN(컬럼)
    • 최댓값 : MAX(컬럼)
  • 사용 예시
select min(price) min_price,
       max(price) max_price
from food_orders

 

 

 - 쿼리 흐름 정리 해보기 

1. query를 적기 전에 흐름을 정리해보기

 - 어떤 테이블에서 데이터를 뽑을 것인가

 - 어떤 컬럼을 이용할 것인가

- 어떤 조건을 지정해야 하는가

- 어떤 함수(수식)을 이용해야 하는가 

 

  • GROUP BY로 범주별 연산 한 번에 끝내기
    • 카테고리별로 계산
    • 이 때 사용되는 구문이 Group by 
    • 집계함수 이외에 모든 컬럼은 Group by 해준다
  • 사용예시
select cuisine_type,
       sum(price) sum_of_price
from food_orders
group by cuisine_type

 

  • Query 결과를 정렬하여 업무에 바로 사용하기 (Order by)
종류 구문 예시
오름차순 생략 order by sum(price)
내림차순 desc order by sum(price) desc

 

 

  • 완성된 SQL 문의 기본 구조
select
from
where
group by
order by

 

 


- 3주차 강의

  • 업무 필요한 문자 포맷이 다를 때, SQL로 가공하기 (REPLACE, SUBSTRING, CONCAT)
    • 특정 문자를 다른 문자로 바꾸기
      • 함수명 : replace
      • 사용 방법
replace(바꿀 컬럼, 현재 값, 바꿀 값)
  • 원하는 문자만 남기기
    • 함수명 : substring (substr)
  • 사용 방법
substr(조회 할 컬럼, 시작 위치, 글자 수)
  • 여러 컬럼의 문자를 합치기
    • 함수명 : concat
  • 사용방법
concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
  • 붙일 수 있는 문자의 종류
    • 컬럼
    • 한글
    • 영어
    • 숫자
    • 기타 특수문자

● 반올림과 버림 함수 (ROUND, TRUNCATE)

 

 - ROUND(숫자, 반올림할 자릿수)

    예시)

select round(38478.8903) from rev
-- 38479


select round(38478.8903, 1) from rev

-- 38478.9

select round(38478.8903, -1) from rev

-- 38480

select round(38478.8903, -2) from rev

--38500

 

 - TRUNCATE : 특정 자릿수 이하를 버리는 버림(숫자, 버림할 자릿수)

    예시 ) 

SELECT TRUNCATE(38478.8903 ,1) FROM rev
-- 38478.8

SELECT TRUNCATE(38478.8903 ,3) FROM rev
-- 38478.89  -> 소수점 셋째자리 이후는 다 버린다.

SELECT TRUNCATE(38478.8903 ,-1) FROM rev
--38470

SELECT TRUNCATE(38478.8903 ,-3) FROM rev

--38000

'데이터분석 study > SQL' 카테고리의 다른 글

TIL_24.07.12_다중 테이블 left join  (0) 2024.07.12
TIL_24.07.11_join 과 using  (0) 2024.07.11
TIL(Today I Learned) 24.07.01  (0) 2024.07.01
TIL(Today I Learned) 24.06.26  (0) 2024.06.26
TIL(Today I Learned) 24.06.25  (0) 2024.06.25