Q. 사원테이블을 부서별로 구분하고 하고 사원리스트를 조회하고 싶은 경우
- group_concat(필드명)을 통해 아래와 같이 문자열을 합칠 수 있음
1. 기본형 : group_concat(필드명)
2. 구분자 변경 : group_concat(필드명 separator '구분자')
3. 중복제거 : group_concat(distinct 필드명)
4. 문자열 정렬 : group_concat(필드명 order by 필드명)
ex)
SELECT emp.username, V.*
FROM emp
INNER JOIN (SELECT E.deptname, D.id, AVG(salary) AS "평균연봉", MAX(salary) AS "최고연봉", MIN(salary) AS "최소연봉", COUNT(*) AS "사원수"
FROM emp AS E
INNER JOIN dept AS D
ON E.deptname = D.deptname
GROUP BY D.deptname) AS V
ON emp.deptname = V.deptname;
- 내가 한 버전) 부서별로 평균연봉, 최고연봉, 최소연봉을 구한 테이블을 만들어 놓고
그 테이블이랑 사원테이블을 조인해서 조회
SELECT D.deptname AS 부서,
GROUP_CONCAT(E.username) AS 사원리스트,
TRUNCATE(AVG(E.salary), 0) AS 평균연봉,
MAX(E.salary) AS 최고연봉,
MIN(E.salary) AS 최소연봉,
COUNT(*) AS 사원수
FROM emp AS E
INNER JOIN dept AS D
ON E.deptname = D.deptname
GROUP BY D.id;
- GROUP_CONCAT을 이용한 버전
'DBMS' 카테고리의 다른 글
DB - CHAR, VARCHAR (0) | 2024.07.03 |
---|---|
MyBatis (0) | 2024.07.03 |
with recursive 문법 (0) | 2024.05.29 |
DB - SQL Injection (0) | 2024.05.22 |
DATABASE - ERD 관계 (0) | 2024.05.02 |