1. Aggregate Functions(집계함수)
- Aggregate Functions(집계함수) : 여러 칼럼 혹은 테이블 전체 칼럼으로부터 하나의 결과값을 반환하는 함수
집계 함수 | 설명 |
---|
COUNT() | 특정 컬럼의 행 개수를 반환합니다. NULL 값은 무시합니다. |
SUM() | 특정 컬럼의 총합을 반환합니다. NULL 값은 무시합니다. |
AVG() | 특정 컬럼의 평균값을 반환합니다. NULL 값은 무시합니다. |
MIN() | 특정 컬럼의 최솟값을 반환합니다. NULL 값은 무시합니다. |
MAX() | 특정 컬럼의 최댓값을 반환합니다. NULL 값은 무시합니다. |
FIRST() | 특정 컬럼의 첫 번째 행의 값을 반환합니다. NULL 값은 무시합니다. |
LAST() | 특정 컬럼의 마지막 행의 값을 반환합니다. NULL 값은 무시합니다. |
GROUP_CONCAT() | 특정 컬럼의 문자열을 연결하여 반환합니다. NULL 값은 무시합니다. |
STD() | 특정 컬럼의 표준 편차를 반환합니다. NULL 값은 무시합니다. |
VAR_POP(), VAR_SAMP() | 특정 컬럼의 모집단 분산과 표본 분산을 반환합니다. NULL 값은 무시합니다. |
SELECT COUNT(DISTINCT police_station) FROM crime_status;
SELECT SUM(case_number) FROM crime_status
WHERE crime_type = '살인'
AND status_type='발생';
SELECT AVG(case_number) FROM crime_status
WHERE crime_type LIKE '살인'
AND status_type LIKE '발생';
SELECT MIN(Case_number) FROM crime_status
WHERE police_station LIKE '성북'
AND status_type LIKE '발생';
SELECT MAX(case_number) FROM crime_status
WHERE crime_type = '절도'
AND status_type = '검거';
SELECT police_station, MAX(case_number) FROM crime_status
WHERE status_type LIKE '검거'
GROUP BY police_station
ORDER BY MAX(case_number)
LIMIT 5;
SELECT police_station, AVG(case_number) 평균 FROM crime_status
WHERE police_station LIKE '%대문'
AND status_type LIKE '발생'
GROUP BY police_station
HAVING 평균 >= 500;
2. Scalar Functions(스칼라 함수)
- Scalar Functions(스칼라 함수) : 입력값을 기준으로 단일 값을 반환하는 함수
스칼라 함수 | 설명 |
---|
UCASE() or UPPER() | 문자열에서 모든 알파벳을 대문자로 변환합니다. |
LCASE() or LOWER() | 문자열에서 모든 알파벳을 소문자로 변환합니다. |
MID() or SUBSTRING() | 문자열의 특정 부분을 추출합니다. |
LENGTH() | 문자열의 길이를 반환합니다. |
ROUND() | 숫자를 가장 가까운 정수로 반올림합니다. |
NOW() | 현재의 날짜와 시간을 반환합니다. |
FORMAT() | 숫자를 지정된 형식에 따라 포맷팅합니다. |
CONCAT() | 두 개 이상의 문자열을 연결합니다. |
COALESCE() | 주어진 인자 중 첫 번째 NULL 이 아닌 값을 반환합니다. |
ABS() | 숫자의 절대값을 반환합니다. |
SQRT() | 숫자의 제곱근을 반환합니다. |
SELECT UCASE(Cafe) FROM sandwich;
SELECT LCASE(Menu) FROM sandwich;
SELECT `Rank`, Cafe, Menu, MID(Menu, -3, 3) FROM sandwich
WHERE `Rank` = 10;
SELECT AVG(LENGTH(Menu)) FROM sandwich;
SELECT ROUND(Price*1000, -2) FROM sandwich;
SELECT NOW();
SELECT FORMAT(Price*1000, 0) FROM sandwich
WHERE ROUND(Price*1000, -2) >= 2000;
3. Subquery(서브쿼리)
- Subquery(서브쿼리) :
하나의 SQL문 안에 포함되어 있는 또 다른 SQL문!
서브쿼리는 메인쿼리 컬럼을 사용할 수 있지만,
메인쿼리는 서브쿼리 컬럼을 사용할 수 없다!
◾ 스칼라 서브쿼리-SELECT 절
◾ 인라인 뷰-FROM 절
◾ 중첩 서브쿼리(Single Row / Multiple Row / Multiple Column)-WHERE 절
SELECT case_number,
(SELECT AVG(case_number) FROM crime_status
WHERE crime_type LIKE '강도'
AND status_type LIKE '검거') AVG
FROM crime_status
WHERE police_station LIKE '은평'
AND crime_type LIKE '강도'
AND status_type LIKE '검거';
SELECT c.police_station, c.crime_type, c.case_number
FROM crime_status c,
(SELECT police_station, max(case_number) COUNT FROM crime_status
WHERE status_type LIKE '발생'
GROUP BY police_station) m
WHERE c.police_station = m.police_station
AND c.case_number = m.count;
SELECT name FROM celeb
WHERE name = (SELECT host FROM snl_show WHERE id = 1);
SELECT host FROM snl_show
WHERE host IN (SELECT name FROM celeb
WHERE JOB_TITLE LIKE '%영화배우%');
SELECT name, sex, agency FROM celeb
WHERE (sex, agency) IN (SELECT sex, agency FROM celeb
WHERE name = '강동원');