- 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

+ Recent posts