Tiny Bunny
본문 바로가기
DBMS

[MySQL] GROUP_CONCAT

by 내이름효주 2024. 1. 9.

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