반응형
- 고객들의 일자별 하루 행동패턴을 보고싶을때 어떻게 보면 좋을까 ?
1) MYSQL
- cust_seq = 고객번호
- Reg_dttm = 로그가 등록된 일자
- tracking_cd = 행동한 로그
select cust_seq
,date(reg_dttm)
,reg_dttm
,tracking_cd
from cust_tracking_log ctl
-- order by reg_dttm
- 로그를 기록하는 테이블을 일자별로 나열한다.
- 아래와 같이 코드를 작성하면 고객별 , 일자별 로그가 기록된다.
select cust_seq ,date(reg_dttm) GROUP_CONCAT tracking_cd SEPERATOR "-") as 행동양식 from ( select cust_seq ,date(reg_dttm) ,reg_dttm ,tracking_cd from cust_tracking_log ctl order by reg_dttm ) a group by cust_seq ,date(reg_dttm)```
- 일자별 로그를 행동양식별로 group by 하면 -> 패턴별 갯수가 나온다.!
GROUP_CONCAT?
그룹별로 문자열을 묶어서 출력해주는 함수
- SEPARATOR는 구분자를 지정해주는 것
- Default 값(명시 X)은 ','
- 순서를 지정하고 싶다면
- 이런식
select group_concat(column order by column seperator ~)
2) Oracle
- 문법 : LISTAGG(column, 구분자) within group(order by column)
SELECT
grade, LISTAGG(custuer, ",") within group(order by custuer)
FROM
custuer_grade
GROUP BY
함수는 다르지만, 사용방법은 동일.
- SEPERATOR 문자 없이 바로 구분자 지정
데이터 정렬
- LISTAGG 뒤에 within group(order by column) 사용.
반응형
'Data Analysis > SQL' 카테고리의 다른 글
15. [SQL] 같은 컬럼내에 있는 긴 문장중에서 'A'라는 단어가 먼저 나오고 그 다음 'B'라는 단어가 나오는 데이터를 조회하는 방법 by using chat-gpt (0) | 2022.12.22 |
---|---|
14. [SQL] MySQL INSERT ... ON DUPLICATE KEY UPDATE Statement - 있으면 업데이트하고 없으면 새로 INSERT 하는 구문 (0) | 2022.11.19 |
12.[SQL] Query Tuning - Partition 파티션 (0) | 2022.11.19 |
11.[SQL] Query Tuning - 2. 온라인 Select문 튜닝 방법론 (0) | 2022.11.16 |
10. [SQL] Query Tuning - 1. 코드컨벤션 지정 (0) | 2022.11.16 |
댓글