GROUP BY 구문을 통한 예시
GROUP BY는 각 열(Column)을 그룹화해줄 때 사용합니다. 나누고자 하는 그룹의 열(Column)을 GROUP BY 뒤에 추가하면 됩니다.
1. 부서별 평균 급여
SELECT
DEPTNO, AVG(SAL)
FROM EMP
GROUP BY DEPTNO;
=> EMP 테이블로 부터 부서별 급여 AVG(SAL)과 부서 번호를 추출하고, 부서 번호에 대해서 그룹화를 해준다.
2. 부서별 총 사원 수와 커미션을 받는 사원의 총 수
SELECT
DEPTNO, COUNT(*), COUNT(COMM)
FROM EMP
GROUP BY DEPTNO;
=> COUNT(*)을 이용해 총 사원수를 구하고, COUNT(COMM)를 이용해 커미션을 받는 사원 수를 구할 수 있다.
3. 부서별 최대 급여와 최소 급여
SELECT
DEPTNO, MAX(SAL), MIN(SAL)
FROM EMP
GROUP BY DEPTNO;
=> MAX를 이용해 최댓값을 구하고, MIN을 이용해 최솟값을 구해준다.
HAVING 절을 사용한 구문 예시
1. 부서별로 평균 급여(평균 급여가 2000 미만인 부서는 제외)
=> WHRER 절에서 열(Column)에 대한 조건을 설정하고 그룹화(GROUP BY)를 이용해주면 오류가 난다. 따라서 그룹화를 하고 난 다음에 조건을 설정할 수 있는 HAVING 절을 사용해야 한다.
SELECT
DEPTNO, AVG(SAL)
FROM EMP
GROUP BY EMPTNO
HAVING AVG(SAL) >= 2000;
=> AVG(SAL)로 평균 급여를 구해주고 HAVING 절 내에 해당 값이 2000 이상인 값만 추출한다.
2. 급여가 1000 이상인 사원을 대상으로 부서별 평균 급여(단, 평균 급여가 2000 미만 부서 제외)
SELECT
DEPTNO, AVG(SAL)
FROM EMP
WHERE SAL >= 1000
GROUP BY DEPTNO
HAVING AVG(SAL) >= 2000;
=> 급여가 1000 이상인 사원에 관한 조건을 걸어주고 이후 HAVING 절을 이용해 평균 급여에 관한 조건을 설정한다.
정렬(ORDER BY) 구문 예시
쿼리 내 열(Column)을 오름차순, 내림차순으로 정렬 해야할 때가 있다. 이런 경우 ORDER BY를 사용한다.
DESC는 내림차순을 의미하며 ASC는 오름차순을 의미한다.
1. 사원 번호, 이름, 급여를 추출하며 급여가 높은 순으로 정렬한다.
SELECT
EMPNO, ENAME, SAL
FROM EMP
ORDER BY SAL DESC;
=> 사원 번호, 이름, 급여에 관한 열(Column)을 추출하며 ORDER BY 내에 급여(SAL)에 관해서 내림차순(DESC)을 해준다.
조인(JOIN)을 이용한 예시
조인은 2개 이상 테이블(Table)을 합쳐서 데이터를 조회할 때 사용한다. 검색하고자 하는 값들이 두 개 이상의 테이블(Table)에 있을 경우 한 개의 테이블(Table)로 조인(JOIN) 후 결과 값을 가져올 수 있습니다.
1. 사원의 이름과 부서 이름을 매칭하고자 할 때
SELECT
ENAME, DNAME
FROM EMP, DEPT
WHERE EMP.ENAME = DEPT.DEPTNO;
=> 사원 이름과 부서 이름의 열(Column)을 추출하며, EMP 테이블(Table) 내 사원 이름과 DEPT 테이블(Table) 내 부서 번호가 같을 때의 조건을 사용.
2. 사원의 이름과 사원의 관리자 이름 데이터
SELECT
E.ENAME, M.ENAME
FROM EMP E INNER JOIN EMP M ON E.MGR = M.EMPNO;
=> EMP 테이블(Table) 내에서 INNER JOIN을 해주며 별칭을 사용할 수 있다. E의 관리자 이름과 M의 사원 번호가 같을 때라는 조건을 ON 뒤에 적어준다.
3. 사원 이름과 급여, 급여 등급 데이터
SELECT
E.ENAME, E.SAL, S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL >= S.LOSAL AND E.SAL <= S.HISAL;
=> 급여 등급에 관한 테이블(Table)인 SALGRADE를 S로 별칭한 후 사용. 조건으로 사원의 급여(E.SAL)가 급여 등급에 있는 최소 급여 기준(S.LOSAL) 보다는 크거나 같고, 최대 급여 기준(S.HISAL) 보다는 작거나 같아야 한다.
참고자료
'BigQuery&SQL_' 카테고리의 다른 글
BigQuery 강의 1 (0) | 2024.12.09 |
---|---|
MySQL 예시 코드 및 실습 1 (0) | 2022.04.24 |
MySQL 데이터 베이스(Database) 정리 (0) | 2022.04.19 |