일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- ORDERBY
- poi
- 스프링파일업로드
- CSS3
- 게시판구현
- pagenation
- 스프링
- db
- poi엑셀
- JSTL
- jsp
- jquery
- 파일업로드
- html5
- 자바스크립트
- mybatis
- MariaDB
- mysql
- Java
- 자바타입
- insert
- crud
- 페이징
- 자바
- select
- 자바파일업로드
- spring
- PAGING
- 퍼블리싱
- SQL
- Today
- Total
째의 개발 기록방
[MyBatis/MariaDB] 그룹함수 / GROUP BY절 / HAVING절 본문
- 그룹함수
- 그룹 함수는 검색된 여러 행을 이용하여 통계정보를 계산하는 함수이다.
그룹 함수의 종류에는 COUNT, MAX, MIN, SUM, AVG, STDDEV, VARIANCE 등이 있다.
1. 그룹함수는 NULL값이 있는 컬럼은 조회에 포함시키지 않는다.
2. LOW가 없는 테이블에 그룹함수 COUNT()를 사용 시 0이 출력되며 SUM()를 사용시 NULL 값이 출력된다.
3. COUNT, MAX 와 MIN은 문자, 숫자, 날짜 데이터 모두에게서 사용할 수 있다. 그러나 AVG SUM, VARIANCE, STDDEV는 NUMBER만 사용 가능하다.
4. EXPR이 있는 인수들의 자료 형태는 CHAR, VARCHAR2, NUMBER, DATE 형이 될 수도 있다.
함수명 | 기능 | 사용 |
COUNT | 행의 수를 계산한다. | COUNT(컬럼 | *) |
MAX | 값들 중에 최대 값을 반환한다. | MAX(컬럼) |
MIN | 값들 중에 최소 값을 반환한다. | MIN(컬럼) |
AVG | 평균 값을 계산한다. | AVG(컬럼) |
SUM | 총 합계를 계산한다. | SUM(컬럼) |
VARIANCE | 분산을 계산한다. | VARIANCE(컬럼) |
STDDEV | 표준편차를 계산한다. | STDDEV(컬럼) |
- GROUP BY
특정 속성을 기준으로 그룹화 하여 검색할 때 그룹화 할 속성을 지정한다.
GROUP BY 절은 반드시 그룹함수와 함께 쓰이며 그룹 함수의 결과 값은 GROUP BY 절에 기술된 컬럼의 항목들의 행의 개수에 의해 결정된다.
-
SELECT 절에 그룹 함수와 컬럼명이 같이 기술된 경우 해당 컬럼은 반드시 GROUP BY절에 그룹화 돼야 한다.
- where절 다음에 수행된다.
-
결과 값이 정렬되길 원한다면 반드시 ORDER BY 절을 추가한다.
SELECT [DISTINCT] 컬럼, 그룹 함수(컬럼)
FROM 테이블명
[WHERE 조건]
[GROUP BY Group대상]
[ORDER BY 정렬대상 [ASC/DESC]]
SELECT [DISTINCT] = 중복제거
* SELECT count (DISTINCT 컬럼명) from 테이블명
* ORDER BY절은 항상 select문 마지막에 위치한다.(쿼리문 중 가장 나중에 실행되기 때문)
- HAVING
where 절과 같은 조건절이다.
group by가 where절 다음에 수행되는것처럼 having은 group by 다음에 수행된다.
SELECT 컬럼
FROM 테이블명
[WHERE 조건]
[GROUP BY Group대상]
[HAVING count(name)>1;]
[ORDER BY 정렬대상 [ASC/DESC]]
WHERE와 HAVING의 차이점 간단 요약
- Having은 그룹화 또는 집계가 발생한 후 레코드를 필터링하는데 사용된다.
- Where은 그룹화 또는 집계가 발생하기 전에 레코드를 필터링하는데 사용된다.
출처: https://yoo-hyeok.tistory.com/91 [유혁의 개발 스토리], https://velog.io/@ljs7463/SQL-having-%EA%B3%BC-where-%EC%B0%A8%EC%9D%B4
'Back End > SQL' 카테고리의 다른 글
[MyBatis/MySql] MyBatis 사용법, 서브쿼리 사용법 (0) | 2022.05.10 |
---|---|
[MyBatis/MariaDB] 조건으로 검색 기능 구현하기 2 (0) | 2021.11.05 |
[MyBatis/MariaDB] 페이징 구현하기 2 (0) | 2021.10.28 |
[MyBatis/MariaDB] LAST_INSERT_ID()와 WHERE 1=1에 대하여 (0) | 2021.10.21 |
[MyBatis/MariaDB] mapper.xml 문법 (0) | 2021.06.09 |