SELECT MIN(salary)
FROM emp
SELECT MAX(salary)
FROM emp
SELECT 부서명, SUM(salary)
FROM emp
GROUP BY deptId;
SELECT 부서명, AVG(salary)
FROM emp
GROUP BY deptId;
# CONCAT 은 열 간의 값들을 연결하는 반면 GROUP_CONCAT은 행 간의 값들을 연결한다.
# 테이블에 저장된 name 데이터들을 id 역순으로 정렬하고 데이터 사이에 ', '를 통해 구분한다.
GROUP_CONCAT(name ORDER BY id DESC SEPARATOR ', ')
# TRUNCATE는 소숫점 버림 함수이다.
# 평균연봉데이터를 0자릿수 아래로 버린다.
TRUNCATE(AVG(salary),0)
# 만약, deptId가 1이라면 '홍보'를 아니라면 '기획'을 값으로 넣는다.
IF(deptId = 1, '홍보', '기획')
SELECT CASE
WHEN bookId = 1 THEN '과학'
WHEN bookId = 2 THEN '사회'
ELSE '기타' END AS 책주제
SELECT *
FROM (
쿼리문
) AS D
...
SELECT *
FROM
(
SELECT dept.name AS 부서명, E.name AS 사원명, E.salary AS 최고연봉자
FROM emp AS E INNER JOIN
( SELECT emp.deptId AS id, MAX(salary) AS 최고연봉
FROM emp GROUP BY emp.deptId) AS D ON E.deptId = D.id
)
INNER JOIN dept ON E.deptId = dept.Id
WHERE E.salary = D.최고연봉
ORDER BY E.id
) AS G
GROUP BY G.부서명
LEFT JOIN
은 NULL
값인 칼럼도 출력한다. (INNER JOIN
과 달리 합집합이기 때문에)SELECT D.name AS `부서명`, E.id AS `사원번호`, E.name AS `사원명`
FROM dept AS D
LEFT JOIN emp AS E
ON E.deptId = D.id;