Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Counting
- Matrix
- string
- SQL
- Binary Search
- Data Structure
- bit manipulation
- two pointers
- 자바
- Binary Tree
- Class
- java
- simulation
- implement
- Method
- Tree
- Stack
- hash table
- greedy
- Math
- Number Theory
- 파이썬
- sorting
- database
- 구현
- dynamic programming
- array
- 코테
- geometry
- 코딩테스트
Archives
- Today
- Total
코린이의 소소한 공부노트
[MySQL] COUNT, GROUP BY, HAVING 본문
[예시에 사용한 테이블]
# 수학 성적이 A인 학생들의 수를 알려줘
select count(*) from student_grade where Math='A';
# 결과
count(*)
61
# 몇명의 학생들이 9명의 카카오 프렌즈 중 누굴 좋아하는지 궁금한데
# 이렇게 쓰면 되는건가?
select count(friends) from student_info;
# 결과
count(friends)
300
# 전교생의 명수가 나와버렸네..?
[COUNT]
1. count(칼럼명) as 별명 형태로 쓴다.
- 별명은 필요할 때 쓴다.
2. 해당 칼럼에 있는 값이 같은 행의 개수를 센다.
- 이때 칼럼값의 중복 여부와 관계없이 센다. 그렇기 때문에 2번째 쿼리의 결과가 총 전교생 수인 300으로 나온 것이다.
- 모든 행의 개수를 셀 때는 칼럼명 대신 아스타(*)를 사용하면 된다.
3. 칼럼값이 null일 경우에는 세지 않는다.
# 어떤 프렌즈를 몇 명의 학생들이 좋아하는지 알려줘
# 정렬 순서는 명수가 큰것부터 내림차순으로 부탁해
select friends, count(*) as cnt from student_info group by friends order by cnt desc;
# 결과
friends cnt
Choonsik 66
Apeach 48
Muzi 41
Frodo 29
Ryan 28
Neo 28
Con 26
JayG 24
Tube 10
[GROUP BY]
1. group by 칼럼명 형태로 쓰인다.
- 여러 그룹을 만들고 싶으면 콤마(,)를 이용해 칼럼명을 나열해주면 된다.
2. 해당 칼럼에 같은 값을 가진 행끼리 묶어주는 역할을 한다.
3. 유형별로 개수를 셀 때 count와 같이 쓰인다.
# 3학년 학생들 중에서 어떤 프렌즈를 몇 명의 학생들이 좋아하는지 보여줘
select friends, count(*) as cnt from student_info where hakbeon>30000 group by friends;
# 결과
friends cnt
Apeach 25
Choonsik 24
Neo 11
Muzi 9
Ryan 6
Con 10
JayG 9
Frodo 6
# 3학년 학생들 중에서 어떤 프렌즈를 몇 명의 학생들이 좋아하는지 알아본 다음
# 20명보다 큰 결과만 보여줘
select friends, count(*) as cnt from student_info where hakbeon>30000 group by friends
having cnt>20;
# 결과
friends cnt
Apeach 25
Choonsik 24
[HAVING]
1. group by 뒤에 having 조건문 형태로 쓴다.
2. group by로 묶은 데이터를 처리할 때 쓰이는 조건절이다.
- where는 group by로 묶기 전 데이터를 처리할 때 쓰이는 조건절이다.
'Back-End' 카테고리의 다른 글
[MySQL] CASE WHEN, THEN, ELSE (0) | 2023.03.29 |
---|---|
[MySQL] INSERT, UPDATE, DELETE (0) | 2023.03.29 |
[MySQL] ORDER BY, LIMIT (0) | 2023.03.18 |
[MySQL] 내가 겪은 오류 모음 (0) | 2023.03.16 |
[MySQL] SELECT, FROM, WHERE (0) | 2023.03.16 |