본문 바로가기
컴터/Database (MYSQL)

4) [Database_MYSQL] 그룹핑(group by), 정렬(order)

by 나 진짜 못차마 2023. 6. 16.
728x90

요약은 제일 밑에 !!

그룹핑(group by)

특정 칼럼을 기준으로 데이터를 그룹핑함

SELECT * FROM 테이블명 GROUP BY 그룹핑 할 기준 칼럼명

 

 

예제:

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `distance` INT NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울',  10, '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', 200, '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', 350, '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', 190, '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', 200, '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', 400, '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', 310, '1981-2-3 00:00:00');

 

1.

select sex from student group by sex;

성별 중에 어떠한 성별의 종류가 있는지 파악하기 위해 사용할 수 있습니다.

2.

select sex,sum(distance), avg(distance) from student group by sex;

sum(distance)는 거리의 합, avg(distance) 거리의 평균.

모든 남자의 거리 합,평균

모든 여자의 거리 합,평균 을 출력한 것 !

 

 

정렬(order)

지정된 칼럼을 기준으로 행을 정렬

DESC - 내림차순, ASC - 오름차순

SELECT * FROM 테이블명 ORDER BY 정렬의 기준으로 사용할 열 [DESC | ASC]

 

 

예제 :

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `distance` INT NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  
INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울',  10, '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', 200, '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', 350, '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', 190, '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', 200, '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', 400, '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', 310, '1981-2-3 00:00:00');

 

 

1.

select * from student order by distance desc;

distance 숫자를 기준으로 해서 정렬하는 것 !

desc 내림차순, asc 오름차순으로 정렬된 것을 볼 수 있습니다.

 

 

2.

select * from student order by distance desc, address asc;

명령어 순서대로 일단 distance 기준으로 정렬을 하고,

그 안에서 동일한 데이터 (ex. 200)가 있는 경우 address를 기준으로 정렬을 한다는 뜻 !

오늘은 간단히 그룹핑과 정렬에 대해 공부했습니닷

다음은 Index 에 대해 공부하겠습니다.

 

요약

그룹핑(group by)

특정 칼럼을 기준으로 데이터를 그룹핑함

SELECT * FROM 테이블명 GROUP BY 그룹핑 할 기준 칼럼명

- 칼럼1의 데이터가 어떠한 값으로 이루어져있는지 볼 수 있음.

select 칼럼1 from 테이블명 group by 칼럼1;

- 예제에서 보았듯 칼럼1의 데이터에서의 칼럼2 데이터 합과 평균을 볼 수 있음.

select 칼럼1,sum(칼럼2), avg(칼럼2) from 테이블명 group by 칼럼1;

 

 

정렬(order)

지정된 칼럼을 기준으로 행을 정렬

DESC - 내림차순, ASC - 오름차순

SELECT * FROM 테이블명 ORDER BY 정렬의 기준으로 사용할 열 [DESC | ASC]

- 선택한 칼럼1의 데이터를 기준으로 desc(내림차순) 또는 asc(오름차순)으로 정렬함.

select * from 테이블명 order by 칼럼1 desc(asc);

- 명령어 순서대로 칼럼1을 desc(내림차순) 정렬하고, 정렬한 값 중 같은 데이터 값이 있다면,

그 데이터들을 칼럼2의 기준으로 asc(오름차순) 정렬함.

select * from 테이블명 order by 칼럼1 desc, 칼럼2 asc;

 

 

 

 

강의 및 자료 출처 -

생활코딩

https://opentutorials.org/course/1

 

생활코딩

hello world 생활코딩의 세계에 오신 것을 환영합니다. 생활코딩은 일반인들에게 프로그래밍을 알려주는 무료 온라인, 오프라인 수업입니다.  어떻게 공부할 것인가를 생각해보기 전에 왜 프로그

opentutorials.org

 

728x90

'컴터 > Database (MYSQL)' 카테고리의 다른 글

6) [Database_MYSQL] JOIN  (0) 2023.06.16
5) [Database_MYSQL] Index  (0) 2023.06.16
3) [Database_MYSQL] table 조회  (0) 2023.06.16
2) [Database_MYSQL] table 삽입,변경,삭제  (0) 2023.06.16
1) [Database_MYSQL] database, table 생성  (0) 2023.06.16