- 데이터 조작 함수 사용하기
자주 사용되는 문자 조작 함수
함수 |
설명 |
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 |