My SQl 정리2 (NULL, GROUP BY, ORDER BY, HAVING)

 











🤩 SQL  
    : 데이터베이스에 저장된 데이터를 불러오는 명령어

    SELECT 컬럼 FROM 테이블 이름 WHERE 필터링

😶 Columns
- empno : 사원번호
- ename : 사원이름
- job : 직책
- mgr : 사수번호
- hiredate : 입사날짜
- sal : 급여
- comm : 보너스
- deptno : 부서번호

정렬 ORDER BY
내림차순 desc   /   오름차순 asc
 ORDER BY 에 default 정렬은 오름차순

😶 SQL 실행순서
 1. FROM  
 2. WHERE
 3. GROUP BY
 4. HAVING
 5. SELECT
 6. ORDER BY

SELECT ename, sal FROM emp ORDER BY sal DESC sal DESC = 2 DESC



- 사원들의 사원 이름, 입사 날짜 조회
- 단, 입사 날짜를 내림차순 하시오
- ORDER BY 작성 시 컬럼 위치를 쓰지 않고 "컬럼 이름"을 작성하자!!

    SELECT ename, hiredate FROM emp ORDER BY hiredate DESC

✍ 이름 검색
- 이름에 a가 한번이라도 들어간 사람

    SELECT ename FROM emp WHERE ename LIKE "%A%"

- 성이 A로 시작하는 사원 검색

    SELECT ename FROM emp WHERE ename LIKE "A%"

NULL
    - 값이 null인 컬럼 조회할 때 사용 IS NULL
        SELECT comm FROM emp WHERE comm IS NULL
    - NULL이 아닌 사원 조회 IS NOT NULL
        SELECT comm FROM emp WHERE comm IS NOT NULL
    - IFnull : null 인 컬럼을 임시로 다른 데이터로 채워줌
        SELECT IFnull(comm, 50) FROM emp

GROUP BY  : 묶다
    - sum, max, min, avg, count
        SELECT job, count(*) FROM emp GROUP BY job
    - 부서 번호 별로 그룹핑 조회 (가장 높은 급여 포함)
        SELECT deptno, max(sal)  FROM emp GROUP BY deptno
    - 부서 번호로 그룹핑하고 부서 별 평균 급여 조회
        SELECT deptno, avg(sal) FROM emp GROUP BY deptno ORDER BY avg(sal)

HAVING
    - GROUP BY 필터링
where 조건에는 sum, avg, max...같은 함수를 사용할 수 없다.
     HAVING 은 GROUP BY 뒤에 온다
        SELECT job, sum(sal) FROM emp GROUP BY job HAVING sum(sal) >= 5000

SQL 실행 순서
1. FROM  
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
6. ORDER BY


SELECT job, avg(sal) FROM emp WHERE job = 'MANAGER' GROUP BY job HAVING avg(sal) >= 2000 ORDER BY avg(sal) DESC

사원 번호는 그룹핑 될 수 없다!

SELECT empno FROM emp GROUP BY empno








댓글

댓글 쓰기