- GROUP BY 절은 데이터들을 원하는 그룹으로 나눌 수 있다.
- 나누고자 하는 그룹의 컬럼명을 SELECT절과 GROUP BY절 뒤에 추가하면 된다.
- 집계 함수와 함께 사용되는 상수는 GROUP BY 절에 추가하지 않아도 된다. (많이 실수 하는 부분)
use employees;
show TABLES;
SELECT * FROM salaries
LIMIT 10;
SELECT *
FROM salaries
GROUP BY emp_no
HAVING emp_no = 10001;
-- 그룹바이절에 조건절을 사용하 때는 having 절을 사용
-- 2단계
SELECT *, count(salary)
FROM salaries
GROUP BY emp_no;
-- 3단계 max, min
SELECT *, count(salary) as count,
max(salary) as max, min(salary) as min,
sum(salary) as sum, round(avg(salary)) as avg
FROM salaries
GROUP BY emp_no;
-- 1단계
SELECT *
FROM employees
GROUP BY gender;
-- 2단계
SELECT *, count(gender)
FROM employees
GROUP BY gender;
-- 조건 두개 걸기
SELECT *, count(hire_date)
FROM employees
GROUP BY hire_date, gender;
--
SELECT * FROM employees;
-- employees (1) : dept_emp(N)
SELECT * FROM dept_emp;
-- dept_emp (N) : (1) -- 1 : N
SELECT * FROM departments;
-- employees : departments --> N : M 관계 차수를 가진다.
-- 중간 테이블 dept_emp 만들어서 N : M 를 표현하고 있다.
-- employees : dept_emp ---> 1 : N 관계로 풀어 진다.
-- departments : dept_emp ---> 1 : N 관계로 풀어 진다.
-- 1단계 dept_emp 조인해보기
SELECT *
FROM employees as e
LEFT JOIN dept_emp as d
ON e.emp_no = d.emp_no;
-- 2 단계 departments
SELECT *
FROM employees as e
LEFT JOIN dept_emp as d
ON e.emp_no = d.emp_no
LEFT JOIN departments as dp
ON d.dept_no = dp.dept_no;
-- 3 단계
SELECT e.emp_no, e.first_name, d.dept_no, dp.dept_name
FROM employees as e
LEFT JOIN dept_emp as d
ON e.emp_no = d.emp_no
LEFT JOIN departments as dp
ON d.dept_no = dp.dept_no;
-- 4 단계 - 결과 집합에서 GROUB BY 사용
SELECT e.emp_no, e.first_name, d.dept_no, dp.dept_name
FROM employees as e
LEFT JOIN dept_emp as d
ON e.emp_no = d.emp_no
LEFT JOIN departments as dp
ON d.dept_no = dp.dept_no
GROUP BY dept_no
HAVING dept_no = 'd001';
'MYSQL' 카테고리의 다른 글
hex 속성 (0) | 2023.08.11 |
---|---|
DB 접근 프로그램 만들기 (0) | 2023.03.23 |
N : M 관계 (0) | 2023.03.16 |
MySQL FUNCTION (0) | 2023.03.16 |
JOIN 구문 (0) | 2023.03.16 |