# NULL 값을 포함한 행의 수
COUNT(*)
# NULL 값을 제외한 행의 수
COUNT(표현식)
# 합계
SUM()
# 평균, 표준편차, 분산
AVG()
STDDEV()
VARIAN()
# 최대, 최소
MAX()
MIN()
# 에러 발생
SELECT POSITION, SALARY FROM PLAYER
GROUP BY POSITION;
# 정상 실행
SELECT POSITION, MAX(SALARY) FROM PLAYER
GROUP BY POSITON;
# 에러 발생
SELECT POSITION AS 포지션, ROUND(AVG(HEIGHT, 2) AS 평균키 FROM PLAYER # 일반 함수 안에는 가능
WHERE AVG(HEIGHT) >= 180 # 에러
GROUP BY POSITION;
# 정상 실행
SELECT POSITION AS 포지션, ROUND(AVG(HEIGHT, 2) AS 평균키 FROM PLAYER
GROUP BY POSITION
HAVING AVG(HEIGHT) >= 180;
SELECT EMP_NO, AVG(SALARY) FROM SALARIES
GROUP BY EMP_NO
HAVING MAX(BONUS) > 7000
SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY
FROM & JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
SELECT DNAME AS DEPT, LOC AS AREA, DEPTNO FROM DEPT
ORDER BY 1, AREA, 3 DESC;
SELECT BIRTH_DATE, FIRST_NAME, LAST_NAME FROM EMPLOYEES
ORDER BY BIRTH_DATE DESC, LAST_NAME;
SELECT * FROM SHOPS
ORDER BY COUNTRY,
CASE
WHEN COUNTRY = 'USA' THEN STATE
ELSE CITY
END;
# 처음에 POSITION이 Administrator인 데이터들 NAME으로 정렬
# POSITION이 다른 값이면 상관없이 NAME으로 정렬
SELECT * FROM DEVELOPER
ORDER BY (
CASE
WHEN POSITION = "Administrator" THEN 0
ELSE 1
END, NAME);
5) SELECT 컬럼명
1) FROM 테이블명
2) WHERE 조건식
3) GROUP BY 컬럼명 | 표현식
4) HAVING 그룹 조건식
6) ORDER BY 컬럼명 | 표현식
SELECT SALARY, POSITION FROM PLAYER
ORDER BY NAME;
# 서브 쿼리 사용 시
SELECT 지역, SUM(매출금액) AS 매출금액
FROM (
SELECT 지역, 매출금액 FROM 지역별매출
)
ORDER BY 년 ASC;
# GROUP BY 절 사용 시 명시되지 않은 컬럼 유지할 수 없음.
SELECT 지역, SUM(매출금액) AS 매출금액 FROM 지역별매출
GROUP BY 지역
ORDER BY 년 ASC;