일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- IOC
- Spring
- fetch join
- method refetence
- 스프링 시큐리티 설정
- 기능적 요구사항
- 비기능적 요구사항
- spring formatter
- ioc컨테이너
- 정적팩토리메서드
- 도커 이미지 빌드
- java predicate
- 생성자주입
- open-session-in-view
- Atomicity
- jpa lazy
- 그래프큐엘
- 토비의 스프링
- 동적파라미터
- 수정자주입
- 소프트웨어의 품격
- jpa no session
- 스프링시큐리티
- kotlin 리팩터링
- 스프링부트 도커
- 스프링
- 스프링di
- 스프링 포매터
- kotlin ::
- 자바 필터
Archives
- Today
- Total
공부기록
GROUP BY 본문
반응형
GROUP BY
그룹화를 할 수 있다.
열에서 같은 값을 가진 행끼리 한데 묶어 그룹화한 집합을 집계함수로 넘겨줄 수 있다.
ex) SELECT * FROM sample;
no | name | value |
1 | A | 1 |
2 | A | 2 |
3 | B | 10 |
4 | C | 3 |
5 | NULL | NULL |
이때 그룹바이로 그룹화할 열을 지정한다. (복수로도 가능)
ex) SELECT COUNT(name) FROM sample GROUP BY name;
name | COUNT(name) |
A | 2 |
B | 1 |
C | 1 |
NULL | 0 |
이렇게 name의 열 값이 A,B,C,NULL 로 그룹화된 것을 볼 수 있다.
주의할점
- WHERE 구의 조건식에서는 집계함수 사용 불가.
- SELECT name, COUNT(name) FROM sample WHERE COUNT(name) = 1 GROUP BY name; <- 되지않는다
- 내부처리순서 : WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY
- WHERE구로 행을 검색하는 처리가 GROUP BY로 그룹화하는 처리보다 앞서기 때문에.
- HAVING 구로 집계함수를 사용해서 조건식을 지정하자.
- SELECT name, COUNT(name) FROM sample GROUP BY name HAVING COUNT(name) = 1;
- GROUP BY에서 지정한 열 이외의 열은 집계함수를 사용하지 않은 채 SELECT 구에 지정할 수 없다.
- SELECT no, name, value FROM sample GROUP BY name; <- 되지않는다
- 그룹당 하나의 행이 결과로 반환. 그런데 name 열 값이 A인 그룹의 value열 값은 1과 2로 두개기 때문에 에러
- SELECT MIN(no), name, SUM(value) FROM sample GROUP BY name;
- SELECT no, name, value FROM sample GROUP BY name; <- 되지않는다
반응형
'Computer Science > DB' 카테고리의 다른 글
[ACID] Atomicity - 원자성 (0) | 2024.02.28 |
---|---|
트랜잭션 격리 수준(isolation level) (0) | 2020.07.14 |
[MySQL] InnoDB와 MyISAM 차이 (트랜잭션) (0) | 2020.07.07 |
INNER JOIN (0) | 2019.12.07 |
UNION (0) | 2019.12.07 |