Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL GROUP BY로 특정 회사의 직원 이름 조회하기

데이터베이스 작업을 하다 보면 여러 회사의 직원 정보가 섞여 있는 테이블에서, 특정 회사에 소속된 직원 이름만 중복 없이 추출해야 하는 경우가 자주 있습니다. 이럴 때 MySQL의 GROUP BY 절과 WHERE 조건을 함께 사용하면 간단하게 해결할 수 있습니다.

이 글에서는 예제 테이블을 만들고 데이터를 삽입한 뒤, GROUP BY를 활용해 특정 회사(예: Google)의 직원 이름을 조회하는 방법을 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 직원 정보를 저장할 테이블을 생성합니다.

mysql> create table DemoTable642(
    EmployeeId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    EmployeeName varchar(100),
    EmployeeCompanyName varchar(100)
);
Query OK, 0 rows affected (0.81 sec)

위 테이블은 세 개의 컬럼으로 구성됩니다.

  • EmployeeId: 자동 증가되는 기본 키
  • EmployeeName: 직원 이름
  • EmployeeCompanyName: 직원이 소속된 회사명

2단계: 샘플 데이터 삽입

INSERT 문을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable642(EmployeeName, EmployeeCompanyName) values('John', 'Google');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable642(EmployeeName, EmployeeCompanyName) values('Carol', 'Microsoft');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable642(EmployeeName, EmployeeCompanyName) values('John', 'Amazon');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable642(EmployeeName, EmployeeCompanyName) values('Carol', 'Google');
Query OK, 1 row affected (0.37 sec)
mysql> insert into DemoTable642(EmployeeName, EmployeeCompanyName) values('John', 'Flipkart');
Query OK, 1 row affected (0.14 sec)

3단계: 전체 레코드 확인

SELECT 문으로 테이블에 저장된 모든 데이터를 확인합니다.

mysql> select *from DemoTable642;

실행 결과는 다음과 같습니다.

+------------+--------------+---------------------+
| EmployeeId | EmployeeName | EmployeeCompanyName |
+------------+--------------+---------------------+
| 1          | John         | Google              |
| 2          | Carol        | Microsoft           |
| 3          | John         | Amazon              |
| 4          | Carol        | Google              |
| 5          | John         | Flipkart            |
+------------+--------------+---------------------+
5 rows in set (0.00 sec)

4단계: GROUP BY로 특정 회사의 직원 이름 조회

이제 핵심 쿼리입니다. WHERE 절로 회사명이 'Google'인 행만 필터링한 후, GROUP BY로 직원 이름을 그룹화하여 중복 없는 결과를 얻습니다.

mysql> select EmployeeName from DemoTable642
    where EmployeeCompanyName = 'Google'
    group by EmployeeName;

실행 결과는 다음과 같습니다.

+--------------+
| EmployeeName |
+--------------+
| John         |
| Carol        |
+--------------+
2 rows in set (0.00 sec)

결과 해석 및 참고 사항

샘플 데이터에서 Google에 소속된 직원은 John(1번)과 Carol(4번) 두 명입니다. GROUP BY를 사용했기 때문에 동일한 이름이 여러 번 등록되어 있어도 한 번씩만 출력됩니다.

참고로, 단순히 고유한 값을 구하는 것이 목적이라면 DISTINCT 키워드를 사용하는 것도 좋은 대안입니다.

select distinct EmployeeName from DemoTable642
where EmployeeCompanyName = 'Google';

DISTINCT와 GROUP BY는 이런 단순 조회에서는 동일한 결과를 반환하지만, COUNT나 SUM 같은 집계 함수를 함께 사용해야 한다면 GROUP BY가 더 적합합니다. 상황에 맞게 선택하여 사용하시기 바랍니다.