본문 바로가기

Computer Science/SQL

SQL 정리-(2)

  • 데이터 조작 함수 사용하기
자주 사용되는 문자 조작 함수

 함수

설명 

LEFT() 

문자열 왼쪽에서부터 문자열 일부를 추출 

LENGTH()

문자열의 길이를 반환 

LOWER()

문자열을 소문자로 변환 

LTRIM() 

문자열의 왼쪽에 있는 공백 문자를 삭제 

RIGHT() 

문자열 오른쪽에서부터 문자열 일부를 추출 

RTRIM() 

문자열의 오른쪽에 있는 공백 문자를 삭제 

SOUNDEX() 

문자열의 SOUNDEX 값을 반환 

UPPER() 

문자열을 대문자로 변환 


  • 그룹 함수 사용하기 
데이터를 실제로 가져 오지 않고 데이터를 요약해야 할 때 그룹 함수를 사용 

- 테이블에 있는 행의 수 
- 테이블에 있는 여러 행의 합계 구하기
- 테이블에서 가장 큰 값, 가장 작은 값, 평균값 구하기 

SQL 합계 함수 

 함수

설명 

AVG() 

컬럼의 평균값 반환 

COUNT() 

컬럼에 있는 행 개수를 반환 

MAX()

컬럼의 최대 값을 반환 

MIN()

컬럼의 최소 값을 반환 

SUM()

컬럼의 합계를 반환  


사용 예시 

SELECT AVG(prod_price) AS avg_price FROM Products;

  • 데이터 그룹핑 이해하기
SELECT vend_id, COUNT(*) AS num_prods FROM Products GROUP BY vend_id;

GROUP BY 절을 통해 vend_id로 그룹핑하게됨 
같은 vend_id가 나올 떄마다 num_prods를 증가시키게 됨 

GROUP BY 절은 DBMS에게 먼저 데이터를 그룹핑하게 한 후 각 그룹에 대한 계산을 하라고 지시함 

* GROUP BY 이해하기
- GROUP BY 절에는 원하는 만큼의 컬럽을 써서, 중첩 그룹을 만들 수 있음 
- GROUP BY 절에서 중첩된 그룹이 있다면, 데이터는 가장 마지막에 지정된 그룹에서 요약됨 
- GROUP BY에 있는 컬럼은 가져오는 컬럼이거나, 그룹 함수는 아니면서 유효한 수식이어야 함 
- 그룹핑하는 컬럼의 행에 NULL 값이 있다면, NULL도 그룹으로 가져옴 
- WHERE절 뒤에 ORDER BY 절 앞에 와야 함 

  • 그룹 필터링
그룹 필터링을 위해 HAVING을 사용할 수 있음 WHERE 절과 유사하지만 WHERE은 데이터가 그룹화되기 전에 필터링하고, HAVING은 그룹화된 후에 필터링함 

SELECT cust_id, COUNT(*) AS orders FROM Orders GROUP BY cust_id HAVING COUNT(*) >=2; 
2개 이상 주문한 제품 ID와 주문 수 가져오기 

SELECT order_num, COUNT(*) AS items FROM OrderItems GROUP BY order_num HAVING COUNT(*) >=3 ORDER BY items, order_num;

주문 번호로 그룹핑하고 각 주문에 대한 수량이 3이상일 경우 주분 번호와 각 수량의 값을 가져오기. 값을 가져올 때 items와 order_num으로 정렬하기 

  • SELECT 순서

절 

설명 

 SELECT

가져올 컬럼이나 수식 

 FROM

데이터를 가져올 테이블 

 WHERE

행 레벨 필터링 

 GROUP BY

그룹 지정 

 HAVING

그룹 레벨 필터링 

 ORDER BY

정렬 순서 



출처: 손에 잡히는 10분 SQL 



반응형

'Computer Science > SQL' 카테고리의 다른 글

SQL 정리-(5)  (0) 2018.11.28
SQL 정리-(4)  (0) 2018.11.28
SQL 정리-(3)  (0) 2018.11.26
SQL 정리-(1)  (0) 2018.11.22