일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터
- HeidiSQL
- 데이터베이스
- 해석
- 데이터전처리
- 훈련
- 머신러닝
- 알고리즘기초
- 선형회기모델
- 크롤링(crawling)
- tensorflow
- python기초
- Database
- sklearn
- 데이터 분석
- 정확도
- 데이터 가공
- 파이썬
- pandas
- 회귀모델
- keras
- 데이터 수집
- 시각화
- python
- 딥러닝
- pythone
- Deep Learning
- 예측
- SQL예제
- MariaDB
- Today
- Total
코딩헤딩
MariaDB 데이터베이스[database, DB] 그룹함수 본문
* 그룹함수
테이블의 전체 행을 하나 이상의 컬럼을 기준으로 컬럼값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수이고 복수행 함수라고도 한다.
* 종류
- count() : 행의 갯수 (컬럼명을 사용하는 경우 null은 제외)
- avg() : 평균 (null인 경우 처리필요)
- max() : 최대값 (null인 경우 처리필요)
- min() : 최소값 (null인 경우 처리필요)
- sum() : 합계 (null인 경우 처리필요)
SELECT COUNT(nvl(prod_mileage,0)) AS all_cnt,
COUNT(*) AS all_cnt2,
AVG(nvl(prod_mileage,0)) AS all_avg,
SUM(nvl(prod_mileage,0)) AS all_sum,
MAX(nvl(prod_mileage,0)) AS all_max,
MIN(nvl(prod_mileage,0)) AS all_min
FROM prod;
count count avg sum max min
* Group By ~ Having절
일반조건일 때 : where절 사용
그룹함수에 대한 조건일 때 : Group By ~ Having절 사용
=> Group By절 : 그룹으로 묶고자 하는 컬렴명 or 일반함수를 처리한 컬럼 지정
=> Having절 : 1. 그룹함수를 이용한 조건(비교연산자) 사용
2.그룹 조건이 없으면 Having절은 사용 안 해도 됨 (Group By절만 사용가능)
*****그룹에 대한 문제로 인식하는 방법 : ~ 별로 조회라는 개념적 용어가 사용되면 Group By로 사용
<컴파일순서> <sql 작성>
1. select -> select 컬럼들
2. from 테이블 -> from 테이블
3. where ~ and -> where 일반조건 / and 일반조건
4. group by -> group by 그룹컬럼
5. having -> having 그룹조건
6. select 뒤에 컬럼들
7. order by -> order by 정렬할 컬럼들
*변하지 않음 국제규칙
<group by를 사용한 경우 규칙>
- group by절에 제시된 컬럼들은 원형그대로, 조회할 컬럼에 제시.
- select절 뒤에 컬럼 또는 일반함수를 이용해서 조회하고자 하는 컬럼들은
group by절에 원형 그대로 제시되어 있어야 오류가 안남.
- 컬럼뒤에 별칭(as)은 group by절에는 사용하면 오류남.
회원 취미별로 count 하기
group by에 지정한 컬럼 또는 일반함수를 이용한 경우 : select절에 예의상 넣어주기
SELECT mem_like, COUNT(nvl(mem_like,0)) AS cnt_like
FROM member
GROUP BY mem_like;
group by에 지정한 컬럼 또는 일반함수를 이용한 경우 : select절에 예의상 넣어주기. 안 넣어주면 뭐가 뭔지 모른다.
예제)
1. [GROUP BY사용]
회원의 성별 count값 조회하기
조회컬럼 : 회원성별, count값
SELECT (case substring(mem_regno2,1,1)
when 1 then '남'
when 3 then '남'
ELSE '여'
END) AS mem_gen,
COUNT(nvl((case substring(mem_regno2,1,1)
when 1 then '남'
when 3 then '남'
ELSE '여'
END),0)) AS gen_count
FROM member
GROUP BY substring(mem_regno2,1,1);
2. cart테이블을 이용해서 회원별로 count 하기
SELECT cart_member, COUNT(nvl(cart_member,0)) AS mem_num,
MAX(nvl(cart_qty,0)) AS max_qty,
SUM(nvl(cart_qty,0)) AS sum_qty
FROM cart
GROUP BY cart_member;
3. 임의 회원이 2005년 4월 1일에 상품하나를 구매했다. 주문번호 발급하기
조회컬럼 : 주문번호만
SELECT MAX(nvl(cart_no,0))+1 AS new_cart_no
FROM cart
WHERE cart_no LIKE '20050401%';
가장 큰 값에서 +1 해주면 된다.
'데이터베이스' 카테고리의 다른 글
MariaDB 데이터베이스[database, DB] InLine View (2) | 2023.11.24 |
---|---|
MariaDB 데이터베이스[database, DB] 조인(Join) (1) | 2023.11.23 |
MariaDB 데이터베이스[database, DB] 함수 (4) | 2023.11.22 |
MariaDB 데이터베이스[database, DB] 서브쿼리(subquery) (0) | 2023.11.21 |
MariaDB 데이터베이스[database, DB] 문자열 함수 (0) | 2023.11.21 |