SQL문에서 사용하는 여러가지 키워드를 통해 좀 더 심화된 SQL문을 작성할 수 있다.
◆ RDB의 데이터 통계 SQL
데이터베이스에 있는 데이터들에 대한 통계 데이터를 뽑아내는 함수로
count() / max() / min() / avg() / sum() ( 괄호 안은 컬럼명 ) 등이 있다.
▶ 통계 SQL 종류
- count는 개수
- max는 제일 큰 수
- min은 제일 작은 수
- avg는 평균
- sum은 합계
▶ 통계 SQL 예시
-
- 특정 컬럼의 데이터 개수 ( null은 포함 하지 않는다. )
- 특정 컬럼의 데이터 개수 ( null은 포함 하지 않는다. )
EMPLOYEES테이블에서 count()는 COUNT(EMPLOYEE_ID), COUNT(COMMISSION_PCT)라는 새로운 컬럼 이름으로 해당 컬럼에 대한 개수를 number형으로 한 행이 나온다.
- 모든 데이터행의 개수 :
통계 SQL에서 은 모든 컬럼을 가리킨다.
즉 COUNT()는 해당 테이블의 총 데이터의 개수를 뽑아낸다.
통계 SQL에서는 특별히 ‘모든’을 의미하는 * 을 사용할 수 있다.
▶ 컬럼명 변경(as)
통계SQL을 쓰게 되면 컬럼명이 count(*)등의 쓰기 어려운 형식으로 나오게 되기 때문에, 뽑아 쓰기 쉽도록 할 수 있기 위해 컬럼명 변경 후 출력이 가능하다.
형식 : ‘ 통계함수 as 변경할컬럼명 ‘
▶ 조건문과 통계 SQL
통계함수와 함께 where절을 사용할 시 where조건을 먼저 실행 한 후의 통계값을 추출한다.
where문의 조건인 department_id가 60인 데이터행에 대한 통계함수 값들이 추출됨.
◆ 통계 SQL 그룹화
그룹화를 하지 않고 통계 함수를 쓰게 되면 테이블 전체에 대한 통계 데이터를 뽑아내기 때문에 한 행의 데이터 밖에 뽑아낼 수 없다.
따라서 같은 데이터를 가진 데이터 행들끼리 그룹화를 시키면 테이블 전체가 아닌 해당 그룹에 대한 각각의 통계SQL을 구할 수 있게 된다.
DEPARTMENT_ID컬럼의 같은 데이터를 가진 데이터를 묶어서 해당 그룹 안에서의 통계데이터를 구한다.
- 그룹화를 하지 않고 통계 SQL을 쓰게 되면 통계SQL 컬럼밖에 뽑아낼 수 없지만, 그룹화를 하게 되면 그룹화 된 해당 컬럼은 결과 테이블의 컬럼으로 뽑을 수 있게 된다.
- 조건문은 그룹화하기 전에 한다.
- 여러 그룹처리도 가능
◆ 정렬
정렬은 디폴트로 pk(primary key)기준 오름차순으로 출력된다. 이를 order by라는 키워드로 정렬의 기준을 바꿀 수 있다
▶ 정렬의 종류
-
- 오름차순(asc)
-
order by
컬럼명 asc (오름차순)
-
- 내림차순(desc)
-
order by
컬럼명 desc ( 내림차순 )
▶ 다중 정렬
정렬을 여러 개 등록하게 되면, 앞에 것을 우선순위로 정렬 후 차례대로 정렬해 나간다.
◆ SQL 처리순서
0.조인(join)
1. 필터링(where)
2. 그룹화(group by)
3. 통계
4. 정렬(sorting)
▶ SQL작성순서
select 통계()… join on ~ where ~ group by ~ order by ~ ( 중간 생략 가능 )
◆ 다중 SQL
select한 결과물에 다시 select를 또 한다거나, select한 결과물에 다른 select한 결과를 조건으로도 사용이 가능.
◆ cf ) 연습용 계정 (HR) 사용하기
오라클 XE를 설치하면, HR(Human Resource)계정을 가지고 통계 SQL을 테스트할 수 있다.
HR계정은 기본적으로 잠겨있기 때문에 system계정으로 접근 후(관리자권한) 잠금을 풀어야한다.
▶ HR잠금 풀기
system계정 로그인 -> 다른 사용자 -> (HR)우 클릭 -> 사용자 편집 -> 새 비밀번호설정, 잠금해제
▶ 새접속
관리자계정 접속해제 후 => +버튼 => 사용자명 hr로 새로운 비밀번호로 접속 ( 접속이름은 아무거나 ) => 하게 되면 테이블이과 데이터가 등록되어있다.