MySQL에서 여러 열로 그룹화

Preet Sanghavi 2023년1월30일
  1. MySQL의 Group By
  2. 여러 열이 있는 MySQL의 GROUP BY
MySQL에서 여러 열로 그룹화

이 자습서에서는 두 개 이상의 열에 GROUP BY 명령을 사용하는 방법을 이해하는 것을 목표로 합니다.

MySQL GROUP BY 명령은 그룹화 목적으로 정의된 특정 기준에 따라 동일한 값으로 레코드를 그룹화할 수 있는 기술입니다. 단일 열만 고려하여 데이터를 그룹화하려고 하면 기준이 정의된 동일한 값을 가진 모든 레코드가 단일 출력으로 함께 결합됩니다.

그러나 MySQL을 사용하면 단일 열뿐만 아니라 여러 열로 데이터를 그룹화할 수 있습니다. 이 튜토리얼의 후반부에서 이 기술을 살펴볼 것입니다. 요약하면, 여러 개의 컬럼을 고려하여 그룹화를 시도하면 그룹화 기준과 함께 둘 이상의 컬럼에 대해 컬럼 값의 그룹화가 수행되는 결과를 얻을 수 있습니다.

이 개념은 구현하기 어렵게 들릴 수 있지만 GROUP BY 문의 한 열을 고려하여 시작하겠습니다.

그러나 시작하기 전에 작업할 더미 데이터 세트를 만듭니다. 여기에서 몇 개의 행과 함께 student_details 테이블을 만듭니다.

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_grade int,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_grade,stu_lastName) 
 VALUES(1,"Preet",40,"Sanghavi"),
 (2,"Rich",50,"John"),
 (3,"Veron",60,"Brow"),
 (4,"Geo",70,"Jos"),
 (5,"Hash",80,"Shah"),
 (6,"Sachin",90,"Parker"),
 (7,"David",25,"Miller"),
 (8,"Richa",50,"Joh"),
 (9,"Verona",60,"Brow"),
 (10,"Geoa",70,"Josh"),
 (11,"Hasha",80,"Ash"),
 (12,"Allen",90,"Parker");

위의 쿼리는 학생의 이름과 성이 포함된 행과 함께 테이블을 생성합니다. 데이터의 항목을 보기 위해 다음 코드를 사용합니다.

SELECT * FROM student_details;

위의 코드는 다음과 같은 출력을 제공합니다.

stu_id	stu_firstName	stu_grade	stu_lastName
1			Preet			40			Sanghavi
2			Rich			50			John
3			Veron			60			Brow
4			Geo				70			Jos
5			Hash			80			Shah
6			Sachin			90			Parker
7			David			25			Miller
8			Richa			50			Joh
9			Verona			60			Brow
10			Geoa			70			Josh
11			Hasha			80			Ash
12			Allen			90			Parker

이제 집계 절로 stu_grade의 합계를 사용하여 stu_lastName을 그룹화하는 간단한 GROUP BY 문의 사용법을 이해하려고 합니다.

MySQL의 Group By

알다시피 GROUP BY 문은 정의된 기준에 대해 동일한 값을 가진 레코드를 그룹화하는 데 도움이 됩니다. GROUP BY 문의 기본 구문은 다음과 같습니다.

SELECT col_a, col_b, aggregate_function(col_c)
FROM tab_name
WHERE condition GROUP BY criteria_col_1;

같은 성을 가진 학생들의 점수 합은 다음과 같이 찾을 수 있습니다.

SELECT SUM(stu_grade), stu_lastName FROM student_details
GROUP BY stu_lastName;

앞서 언급한 코드는 다음과 같은 출력을 제공합니다.

SUM(stu_grade)	stu_lastName
40				Sanghavi
50				John
120				Brow
70				Jos
80				Shah
180				Parker
25				Miller
50				Joh
70				Josh
80				Ash

여러 열이 있는 MySQL의 GROUP BY

위에서 보았듯이 MySQL은 기준에 따라 레코드를 그룹화하는 기능을 제공합니다. 이 방법에 대한 또 다른 추가 사항은 테이블에서 한 번에 둘 이상의 열을 그룹화할 수 있다는 것입니다. MySQL에서 둘 이상의 열을 그룹화하는 구문은 다음과 같이 작성할 수 있습니다.

SELECT col_a, col_b, aggregate_function(col_c)
FROM tab_name
WHERE condition GROUP BY criteria_col_1, criteria_col_2, criteria_col_3;

위에서 볼 수 있듯이 criteria_col_1, criteria_col_2criteria_col_3GROUP BY 절에 포함된 세 개의 열입니다.

이제 성적 합계를 집계 함수로 기준으로 학생의 이름과 성을 그룹화해 보겠습니다. 다음 코드로 이 작업을 수행할 수 있습니다.

SELECT SUM(stu_grade), stu_lastName, stu_firstName
FROM student_details
GROUP BY stu_lastName, stu_firstName;

위 코드의 출력은 다음과 같습니다.

SUM(stu_grade)	stu_lastName	stu_firstName
40				Sanghavi		Preet
50				John			Rich
60				Brow			Veron
70				Jos				Geo
80				Shah			Hash
90				Parker			Sachin
25				Miller			David
50	            Joh	            Richa
60				Brow			Verona
70				Josh			Geoa
80				Ash				Hasha
90				Parker			Allen

보시다시피, 출력은 stu_firstNamestu_lastName 열을 모두 그룹화합니다. 마찬가지로 MySQL에서 여러 열을 그룹화할 수 있습니다. 따라서 GROUP BY 문은 위에서 언급한 방법으로 하나 또는 여러 열에 효율적으로 사용할 수 있습니다.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

관련 문장 - MySQL Groupby