| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- after-throwing
- produces
- 의존주입
- 서비스레이어
- 유효성검사
- frontController
- PointCut
- @RequestMapping
- Java
- @RequestParam
- 바인딩변수
- jointpoint
- 생성자주입
- Model
- 비즈니스레이어
- 스프링
- gradle
- 어노테이션
- SpringBoot
- springjdbc
- MVC
- application.properties
- .xml
- springmvc
- AOP
- @ResponseBody
- spring
- c:if
- @
- @Valid
- Today
- Total
메모장
데이터 그룹화 GROUP BY,HAVING,그룹함수 본문
데이터 그룹화
GROUP BY절은 FROM, WHERE 절 뒤에 위치
같은 값을 가지면 같은 그룹으로 인식해서 집계를 해주는데 집계함수와 같이 사용
집계함수란? sum 합, count (행의 개수 셀수있다), AVG, min, max, 표준편차, 분산
- 집계함수 를 사용할때 주의사항
반드시 하나의 값만 반환
NULL 값을 계산 되지 않는다(기본적으로) - 서브쿼리를 사용하면 가능은 하다
예를 들면 반별로 보고 싶은데 ? 집계를 하지 않는다면
어떤값을 DB가 알려줘야 하는지 모르기 때문에
GROUP BY 설정없이 일반 컬럼과 기술될 수 없다.
어떤것을 기준으로 집계할지 모른다 ,어떤 것을 출력해야 하는지 모른다.
- 그룹바이 사용할때 주의사항
SELECT문에 있는 모든 열은 집계함수가 되거나 GROUP BY 절에 나타나야 한다.
어떤 학급이 있는데 과목별 평균을 알고싶어
과목별 학생의 PK번호를 모름
과목별로 학생의 PK는 존재하지 않음
데이터 베이스에선 정확히 이거다 ! 지정할수 없는 값이기 때문에 오류가 난다.
- HAVING 절에는 GROUP BY 뒤에 쓰고 집계함수를 포함한 조건만 기술
그외의 조건은 WHERE절에
HAVING 절을 사용하면 WHERE절과 같이 조건을 달아서 이미 GROUP BY 를 한 그룹화된 데이터의 조건에 HAVING절이 달린다 그러고 SELECT 문으로 출력
- 그룹화는 집계함수를 무조건 써야되므로 계산된 결과가 나온다 .
GROUP BY가 SELECT 절보다 먼저 실행이 된다
GROUP BY 가 먼저 실행이 되는데 AS(별칭)는 GROUP BY에서 사용할수 있다
SELECT AS로 만든 별칭도 GROUP BY에서 다시 사용가능함
그러나 ! WHERE절에서는 SELECT절에서 사용했던 AS 에 쓴 별칭을 뒤에 못쓴다. ---> 서브쿼리를 쓴다면 가능





그룹화를 하면 중복이 사라진다.
DISTINT 와 유사하다 ----> 단순한 중복제거 한명의 연봉만
그룹화를 하게되면 계산된 결과가 나오게 된다.
그래서 항목만 같고 연봉등을 출력하면 결과는 달라질수 있다.
둘다 어느정도 데이터를 집약하는 공통이 있다.

< 검색로직에서 엄청 많이 쓰임 >!!!!
LOWER는 소문자 변환
UPPER는 대문자 변환


문자열 합치기 CONCAT "" 가 붙으면 그냥 문자열 연결
"" 떼면 컬럼 컬럼 두개

< 문자열 공백 제거 > !!!!!!
로그인 할시에 아이디 비번 입력에 앞뒤에 공백이 들어갈때 알아서 적용되는 기능으로
LTRIM 왼쪽이라 L
RTRIM 오른쪽이라 R
TRIM 양쪽 공백들을 제거


REPLACE 뭐가 들어가있으면 뭐로 바꿔줘 (고지서, 병원 이런데서 많이 씀)
홍*동 이런거 에서 SUBSTRING 으로 두번째 글자 짤라서 REPLACE로 * 바꾸기

- 문자열 채우기
LPAD 왼쪽
RPAD 오른쪽

'DB > 개념정리' 카테고리의 다른 글
| WHERE 1=1 (0) | 2024.04.10 |
|---|---|
| JOIN 과 순위함수 (0) | 2024.04.10 |
| JDBC - 임시 멤버 변수 구현 (0) | 2024.04.10 |
| JDBC PrepareStatement (0) | 2024.04.10 |
| MySQL 날짜 , 날짜함수 (0) | 2024.04.10 |