⭐ 사용 순서
< 순서 >
select 검색하고자 하는 테이블의 필드명 from 검색하고자하는 테이블 명
where 조건 (없다면 생략O)
Group by 묶고자하는 값의 필드명 (없다면 생략O)
Having 그룹의 조건 (없다면 생략O)
Order by 정렬할 필드; (없으면 생략O) → 항상 마지막에 위치
집약
: 열의 데이터를 합계, 평균 같은 집계값을 구하기 위하나 집약 함수
1. Count : 검색된 행의 개수
- 보통 count()안에 pk를 넣어서 사용
- 안에 들어가는 필드명은 상관x
- select count(num) from 테이블명 : 테이블명의 num의 수 검색
select count(*) from student : 전체 수를 검색 = 컴퓨터의 성능에 안좋음(비추)
select count(num) from student : num의 수 검색
< 개수 >
mysql> select count(num) from student;
+------------+
| count(num) |
+------------+
| 8 |
+------------+
1 row in set (0.01 sec)
//------------------ 예 시 -------------------------------------------------
< 1. 과별 인원수 + 오름차순 정렬(기본) >
mysql> select major, count(major) from student // major, major의 수
-> group by major //major을 그룹으로 묶기
-> order by major; //오름차순 정렬
+----------+--------------+
| major | count(major) |
+----------+--------------+
| computer | 5 |
| English | 3 |
+----------+--------------+
2 rows in set (0.00 sec)
< 2. 주소별 인원수 + 내림차순 정렬 >
mysql> select address, count(address) from student
-> group by address
-> order by address desc;
+---------+----------------+
| address | count(address) |
+---------+----------------+
| suwon | 1 |
| seoul | 3 |
| Inchen | 4 |
+---------+----------------+
3 rows in set (0.00 sec)
/* 학과 인원수가 4명 미만인 학과 출력 */
mysql> select major from student
-> group by major
-> having count(major)<4;
+---------+
| major |
+---------+
| English |
+---------+
1 row in set (0.00 sec)
2. Sum : 합계
- select sum(score) from 테이블명 ; : 테이블명의 score의 합계
< 전체 점수 합계 >
mysql> select sum(score) from student;
+------------+
| sum(score) |
+------------+
| 619 |
+------------+
1 row in set (0.00 sec)
< 학과별 점수 합계 >
mysql> select major, sum(score) from student
-> group by major;
+----------+------------+
| major | sum(score) |
+----------+------------+
| computer | 455 |
| English | 164 |
+----------+------------+
2 rows in set (0.00 sec)
// 이름변경 : as
mysql> select major, sum(score) as '점수합계' from student
-> group by major;
+----------+----------+
| major | 점수합계 |
+----------+----------+
| computer | 455 |
| English | 164 |
+----------+----------+
2 rows in set (0.00 sec)
< 조건이 있는 점수 합계 >
- 학과가 computer인 점수 합계
1. where사용
mysql> select major, sum(score) as 'sum'
-> from student where major='computer';
+----------+------+
| major | sum |
+----------+------+
| computer | 455 |
+----------+------+
1 row in set (0.00 sec)
mysql> select sum(score) as "computer 학과의 합계" from student
-> where major='computer';
+----------------------+
| computer 학과의 합계 |
+----------------------+
| 455 |
+----------------------+
1 row in set (0.00 sec)
2. having사용
mysql> select major, sum(score) as 'sum'
-> from student group by major
-> having(major='computer');
+----------+------+
| major | sum |
+----------+------+
| computer | 455 |
+----------+------+
1 row in set (0.00 sec)
3. Avg 평균
< 학과별 점수 합계, 평균 >
mysql> select major, sum(score) as'sum', avg(score) as 'avg'
-> from student group by major;
+----------+------+---------+
| major | sum | avg |
+----------+------+---------+
| computer | 455 | 91.0000 |
| English | 164 | 54.6667 |
+----------+------+---------+
2 rows in set (0.00 sec)
4. max 최대값, min 최소값
< 학과별 합계, 평균, 최대값, 최소값 >
mysql> select major, sum(score) as 'sum',
-> avg(score) as 'avg',
-> max(score) as 'max',
-> min(score) as 'min'
-> from student group by major;
+----------+------+---------+------+------+
| major | sum | avg | max | min |
+----------+------+---------+------+------+
| computer | 455 | 91.0000 | 100 | 70 |
| English | 164 | 54.6667 | 87 | 20 |
+----------+------+---------+------+------+
2 rows in set (0.00 sec)
'DB > 명령프롬프트 - mysql' 카테고리의 다른 글
[MySQL] table 칼럼 수정 Alter (0) | 2023.03.27 |
---|---|
[MySQL] Database 검색 (and/or, like, between, in()) (0) | 2023.03.27 |
[MySQL] 정렬 (order by asc / desc) (0) | 2023.03.27 |
[MySQL] student table - 모든 학생의 age를 +1 업데이트 (0) | 2023.03.27 |
[MySQL] student table - 22=1학년, 23=2학년, 24=3학년, 25=4학년으로 하는 grade속성 추가 (0) | 2023.03.27 |