MariaDB / GROUP BY

예제로 사용한 데이터베이스는 employees입니다.

GROUP BY - 사원별 급여 합계

사번과 급여를 출력하면, 다음처럼 모든 행이 출력됩니다.

MariaDB [employees]> SELECT emp_no, salary
    -> FROM salaries
    -> LIMIT 10
    -> ;
+--------+--------+
| emp_no | salary |
+--------+--------+
|  10001 |  60117 |
|  10001 |  62102 |
|  10001 |  66074 |
|  10001 |  66596 |
|  10001 |  66961 |
|  10001 |  71046 |
|  10001 |  74333 |
|  10001 |  75286 |
|  10001 |  75994 |
|  10001 |  76884 |
+--------+--------+
10 rows in set (0.00 sec)

만약 사번별로 급여의 총합을 구하고 싶다면 GROUP BY를 이용합니다.

MariaDB [employees]> SELECT emp_no, salary
    -> FROM salaries
    -> GROUP BY emp_no
    -> LIMIT 10
    -> ;
+--------+--------+
| emp_no | salary |
+--------+--------+
|  10001 |  60117 |
|  10002 |  65828 |
|  10003 |  40006 |
|  10004 |  40054 |
|  10005 |  78228 |
|  10006 |  40000 |
|  10007 |  56724 |
|  10008 |  46671 |
|  10009 |  60929 |
|  10010 |  72488 |
+--------+--------+
10 rows in set (0.01 sec)

사번만으로 누군지 파악하기 힘들다면, JOIN을 이용해서 이름을 출력할 수 있습니다.

MariaDB [employees]> SELECT salaries.emp_no, salaries.salary, employees.first_name, employees.last_name
    -> FROM salaries
    -> LEFT JOIN employees
    -> ON salaries.emp_no = employees.emp_no
    -> GROUP BY salaries.emp_no
    -> LIMIT 10
    -> ;
+--------+--------+------------+-----------+
| emp_no | salary | first_name | last_name |
+--------+--------+------------+-----------+
|  10001 |  60117 | Georgi     | Facello   |
|  10002 |  65828 | Bezalel    | Simmel    |
|  10003 |  40006 | Parto      | Bamford   |
|  10004 |  40054 | Chirstian  | Koblick   |
|  10005 |  78228 | Kyoichi    | Maliniak  |
|  10006 |  40000 | Anneke     | Preusig   |
|  10007 |  56724 | Tzvetan    | Zielinski |
|  10008 |  46671 | Saniya     | Kalloufi  |
|  10009 |  60929 | Sumant     | Peac      |
|  10010 |  72488 | Duangkaew  | Piveteau  |
+--------+--------+------------+-----------+
10 rows in set (0.00 sec)

GROUP BY - 부서별 사원 수

COUNT 함수를 이용하여 특정 조건을 만족하는 행의 개수를 셀 수 있습니다. 다음은 부서별 사원 수를 출력하는 예제입니다.

MariaDB [employees]> SELECT dept_no, COUNT(emp_no) "number"
    -> FROM dept_emp
    -> GROUP BY dept_no
    -> ;
+---------+--------+
| dept_no | number |
+---------+--------+
| d001    |  20211 |
| d002    |  17346 |
| d003    |  17786 |
| d004    |  73485 |
| d005    |  85707 |
| d006    |  20117 |
| d007    |  52245 |
| d008    |  21126 |
| d009    |  23580 |
+---------+--------+
9 rows in set (0.09 sec)

부서의 이름까지 나타내고 싶다면 JOIN을 활용합니다.

MariaDB [employees]> SELECT dept_emp.dept_no, COUNT(emp_no) "number", departments.dept_name
    -> FROM dept_emp
    -> LEFT JOIN departments
    -> ON dept_emp.dept_no = departments.dept_no
    -> GROUP BY dept_emp.dept_no
    -> ;
+---------+--------+--------------------+
| dept_no | number | dept_name          |
+---------+--------+--------------------+
| d001    |  20211 | Marketing          |
| d002    |  17346 | Finance            |
| d003    |  17786 | Human Resources    |
| d004    |  73485 | Production         |
| d005    |  85707 | Development        |
| d006    |  20117 | Quality Management |
| d007    |  52245 | Sales              |
| d008    |  21126 | Research           |
| d009    |  23580 | Customer Service   |
+---------+--------+--------------------+
9 rows in set (0.11 sec)

Related Posts

MariaDB / DBeaver / MariaDB에 연결하는 방법

MariaDB / DBeaver / MariaDB에 연결하는 방법

MariaDB를 명령어로만 관리하는 것은 힘듭니다. 적절한 툴을 이용하면 작업 속도를 높일 수 있습니다. MariaDB를 관리하는 툴을 여러 가지가 있는데, 그 중 하나가 DBeaver입니다. Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL ...

MariaDB / TABLE / 만들기, 삭제하기, 이름 변경하기

MariaDB / TABLE / 만들기, 삭제하기, 이름 변경하기

테이블 만들기 test 데이터베이스를 만듭니다. MariaDB > CREATE DATABASE test; Query OK, 1 row affected (0.00 sec) test 데이터베이스를 사용합니다. MariaDB > USE test; Database changed table1을 만듭니다. 열이 하나도 없으면 테이블이 만들어지지 않으므로, 적어도 하나 이상의 열을 만듭니다. MariaDB > CREATE TABLE table1 ( column1 VARCHAR(100) ); Query OK, 0 rows affected (0.35 sec) 테이블이 만들어졌는지 확인합니다. MariaDB > SHOW ...

MariaDB / TABLE / AUTO_INCREMENT / 자동으로 증가하는 값 만들기

MariaDB / TABLE / AUTO_INCREMENT / 자동으로 증가하는 값 만들기

테이블에는 데이터를 특정할 수 있는 고유값이 있는 게 좋습니다. 고유값을 수동으로 넣을 수는 없으므로, 값을 자동으로 증가시키는 AUTO_INCREMENT를 사용합니다. AUTO_INCREMENT로 고유값이 어떻게 만들어지는지 알아보겠습니다. 사용하는 테이블 이름은 test입니다. 자동으로 증가하는 열 만들기 열 이름은 id, 데이터 타입은 정수(INT)로 만듭니다. 데이터 타입 뒤에 AUTO_INCREMENT PRIMARY KEY를 붙입니다. MariaDB > CREATE TABLE test ( id INT AUTO_INCREMENT ...

MariaDB / 샘플 데이터베이스 employees 설치하기

MariaDB / 샘플 데이터베이스 employees 설치하기

데이터베이스를 다루는 공부를 할 때 데이터가 들어있는 데이터베이스가 있으면 좋습니다. 직접 만드는 방법도 있지만, 공개된 샘플 데이터베이스를 이용해도 됩니다. 제가 주로 사용하는 것은 test_db입니다. 앞으로의 강좌에서 데이터가 필요한 경우 test_db를 사용할 것입니다. 다음은 MariaDB에 설치하는 방법입니다. GitHub에 있는 test_db 페이지에 접속합니다. Clone or download를 클릭한 다음 다운로드합니다. 서버에 업로드한 다음 압축을 풉니다. employees.sql가 있는 폴더에서 ...

MariaDB / DATA / 데이터 추가(INSERT), 수정(UPDATE), 삭제(DELETE)

MariaDB / DATA / 데이터 추가(INSERT), 수정(UPDATE), 삭제(DELETE)

데이터베이스와 테이블 만들기 test 데이터베이스를 만듭니다. MariaDB > create database test; Query OK, 1 row affected (0.00 sec) test 데이터베이스를 사용합니다. MariaDB > use test; Database changed table_1 테이블을 만듭니다. MariaDB > CREATE TABLE table_1 ( -> column_1 varchar(100), -> column_2 varchar(100), -> column_3 varchar(100) -> ...

MariaDB / 함수 / COUNT, SUM, AVG, MAX, MIN

MariaDB / 함수 / COUNT, SUM, AVG, MAX, MIN

예제로 사용한 데이터베이스는 employees입니다. COUNT COUNT는 특정 조건을 만족하는 행의 개수를 세는 함수입니다. employees 테이블의 전체 행 개수를 구합니다. 의미 상 전체 직원 수를 구하는 것입니다. MariaDB > SELECT COUNT(*) -> FROM employees -> ; +----------+ | COUNT(*) | +----------+ | 300024 | +----------+ WHERE를 이용하여 조건을 추가할 수 있습니다. 다음은 남자 직원의 ...

MariaDB / DATA / CSV 파일 데이터 가져오는 방법

MariaDB / DATA / CSV 파일 데이터 가져오는 방법

LOAD DATA INFILE MariaDB의 LOAD DATA INFILE로 텍스트 파일의 데이터를 가져올 수 있습니다. 문법은 다음과 같습니다. LOAD DATA INFILE 'file_name' INTO TABLE tbl_name [{FIELDS | COLUMNS} ...

MariaDB / DBeaver / 데이터베이스 만들기, 삭제하기

MariaDB / DBeaver / 데이터베이스 만들기, 삭제하기

데이터베이스 만들기 Databases를 선택하고 마우스 우클릭합니다. 팝업 메뉴에서 를 클릭합니다. 데이터베이스 이름을 입력하고, Charset과 Collation을 선택한 후 를 클릭하면… 데이터베이스가 생성됩니다. 데이터베이스 수정하기 왼쪽에서 데이터베이스를 두 번 클릭하면 데이터베이스 정보가 나옵니다. 필요한 수정을 하고 를 클릭한 다음… 팝업 창의 내용을 확인하고 를 클릭하면… 데이터베이스가 수정됩니다. 데이터베이스 삭제하기 데이터베이스를 선택하고 마우스 우클릭합니다. 팝업 메뉴에서 를 클릭하고… 를 클릭하면… 데이터베이스가 삭제됩니다.

MariaDB / 함수 / YEAR, MONTH, DAY / 날짜 데이터에서 년, 월, 일을 반환하는 함수

MariaDB / 함수 / YEAR, MONTH, DAY / 날짜 데이터에서 년, 월, 일을 반환하는 함수

날짜 형식의 데이터에서 년 또는 월 또는 일을 분리해서 출력하고 싶다면 YEAR, MONTH, DATE 함수를 사용합니다. YEAR 날짜 데이터에서 년을 출력하고 싶다면 YEAR 함수를 사용합니다. MariaDB > SELECT YEAR('2020-11-12') as Year; +------+ | Year | +------+ | 2020 | +------+ MONTH 날짜 데이터에서 월을 출력하고 싶다면 MONTH 함수를 사용합니다. MariaDB > SELECT MONTH('2020-11-12') as Month; +-------+ | Month | +-------+ | 11 ...

MariaDB / TABLE / 열 추가하기, 열 삭제하기, 열 순서 변경하기, 열 데이터 타입 변경하기

MariaDB / TABLE / 열 추가하기, 열 삭제하기, 열 순서 변경하기, 열 데이터 타입 변경하기

데이터베이스 만들기 열(Column) 추가, 삭제 등을 해볼 테스트용 데이터베이스 jbTest를 만듭니다. CREATE DATABASE jbTest; 데이터베이스로 들어갑니다. USE jbTest; jbColumn1, jbColumn2, jbColumn3 세 개의 열을 가진 테이블 jbTable1을 만듭니다. CREATE TABLE jbTable1 ( jbColumn1 INT, jbColumn2 INT, jbColumn3 INT ) ; 다음은 현재 테이블 구조입니다. MariaDB > DESC jbTable1; +-----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | ...