본문 바로가기
15. [SQL] 같은 컬럼내에 있는 긴 문장중에서 'A'라는 단어가 먼저 나오고 그 다음 'B'라는 단어가 나오는 데이터를 조회하는 방법 by using chat-gpt 찾다가 어떻게 해야할지 몰라서 이렇게 chat gpt에게 물어봤다. https://chat.openai.com/chat SQL을 사용해서 같은 컬럼내에 있는 긴 문장중에서 'A'라는 단어가 먼저 나오고 그 다음 'B'라는 단어가 나오는 데이터를 조회하는 방법은 무엇입니까? How do I use SQL to retrieve the data where the word 'A' comes first and then the word 'B' in a long sentence in the same column? 돌아온 답변은 아래와 같다. To retrieve data where the word 'A' comes first and then the word 'B' in a long sentence in the sam.. 2022. 12. 22.
14. [SQL] MySQL INSERT ... ON DUPLICATE KEY UPDATE Statement - 있으면 업데이트하고 없으면 새로 INSERT 하는 구문 만약 고객들의 로그 데이터를 활용하기 위해 통계 데이터를 꾸준히 업데이트 해야하는데 매번 지웠다가 다시 insert 할수 없는 크기라면 ? 아물론 매번 delete 했다가 다시 집어넣을수도 있다. 하지만 번거롭고 위험하다. UPDATE를 하면 되는것 아닌가 ? 아래처럼 UPDATE 테이블이름 SET 필드이름1=데이터값1, 필드이름2=데이터값2, ... WHERE 필드이름=데이터값 이렇게 하면 알맞은 값을 수정시켜 주기는 한다. 하지만 원하는건 테이블 전체를 스캔한 뒤에 알맞게 업데이트 해야하면 업데이트 하고, INSERT 해야하면 INSERT하는 그런 구문을 희망하는건데... 이건 그냥 데이터 수정 아닌가 ??? ON DUPLICATE KEY UPDATE 사용하기 MySQL에서는 대량의 파일을 등록 및 .. 2022. 11. 19.
13.[SQL] mysql [문자열 연결 function] MySQL의 group_concat (oracle LISTAGG) - 고객들의 일자별 하루 행동패턴을 보고싶을때 어떻게 보면 좋을까 ? 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_dtt.. 2022. 11. 19.
12.[SQL] Query Tuning - Partition 파티션 [SQL] Query Tuning - Partition 파티션이란 파티션 - 구획 분할 MySQL 서버 입장에서는 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 하나의 테이블로 읽기와 쓰기를 할 수 있게 해주는 기능을 의미 큰 table이나 index를, 관리하기 쉬운 partition이라는 작은 단위로 물리적으로 분할하는 것 파티션을 사용하면 대용량 작업을 더 빠르게 처리할 수 있음 파티션 단위의 조회 및 DML → 부하를 분산시켜줌 DML 인 Delete 로 처리하게 된다면 삭제대상을 조회하는 부하/Operation 과 Redo/Undo를 생성하는 DML영역의 Operation 의 부하등이 동반되기 때문에 파티션을 사용한 파티션 단위의 Drop 을 이용하면 이런 부분을 대폭 줄일 수 .. 2022. 11. 19.
11.[SQL] Query Tuning - 2. 온라인 Select문 튜닝 방법론 참고 : SQL튜닝 방법론 ORACLE Select 쿼리 튜닝 순서 ORACLE Select 쿼리 튜닝 순서 쿼리 튜닝은 온라인 SQL이냐 대용량 배치 SQL이냐에 따라 튜닝방법이 달라집니다. 하지만 대용량 배치는 프로그램 수가 많지 않은 편입니다. 온라인 SQL 튜닝에서도 관점에 따라 튜닝방법이 다르 darusamu.tistory.com 출처: https://scidb.tistory.com/entry/SQL튜닝-방법론 [Science of Database] 튜닝 프로젝트에 투입되었다고 가정하고, 성능이 느린 Select문 하나를 받았을 때 튜닝을 어떻게 해야 하는지에 대해서만 설명 1. 적절한 인덱스를 사용하여 Block I/O를 최소화 하라 I/O 효율화 원리 라이브러리 캐시 최적화 데이터베이스 Ca.. 2022. 11. 16.
10. [SQL] Query Tuning - 1. 코드컨벤션 지정 나에게 주어진 첫번째 과제 - '우리팀에서 사용할 코드 컨벤션을 지정하는 것' 위 짤 처럼 되지 않기 위해서 다른 자료를 참고해 내가 잘할수 있게 + 다른사람이 알아보기 편하게 + 최대한 기존 코드들을 수정하기 쉽게 만들었다. (파이썬도 마찬가지) SQL General General SQL 코드 - 주석 가능하면 /*를 닫고 */를 닫습니다. 그렇지 않으면 주석 앞에 '--' 를 붙이고 간결하게 끝냅니다 /* Updating the file record after writing to the file */ UPDATE file_system SET file_modified_date = '1980-02-22 13:19:01.00000', file_size = 209732 WHERE file_name = '.v.. 2022. 11. 16.
9.[SQL] mysql Week 주 관련 함수 (date 조절), [SQL] Mysql Index 사용법 WEEK(date[,mode]) 주 번호 반환 / 주의 시작 날짜가 일요일인지 월요일인지와 반환 값이 0 ~ 53또는 1~ 의 범위에 있어야 하는지 여부를 지정 mode 인수를 생략하면 default_week_format사용 Mode | First day of week | Range Week 1 is the first week … 0 Sunday 0-53 with a Sunday in this year 1 Monday 0-53 with 4 or more days this year 2 Sunday 1-53 with a Sunday in this year 3 Monday 1-53 with 4 or more days this year 4 Sunday 0-53 with 4 or more days this yea.. 2022. 11. 16.
8. [SQL] 모든 whitespace(탭, 스페이스, 엔터 값 등) 제거, [SQL] SQL의 INDEX는 무엇인가? [SQL] 모든 whitespace(탭, 스페이스, 엔터 값 등) 제거 replace (키워드,'바꿀내용','어떻게바꿀건지내용') 을 replace (키워드, ' ', '') 으로 작성하면 공백만 바뀐다. 모든 화이트 스페이스 제거를 위해서는 (외부에서 오는 데이터는 언제든 이상한 값으로 올수 있기 때문에 ) Regexp_replace (키워드, '\S*', ' 로 작성해야 한다. --- - Oracle 공식문서는 여기 [https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm](https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm) ![Untitled](ht.. 2022. 11. 15.
7. SQL 에서 Where 1=1은 왜 쓰는걸까, mysql 키워드에서 문자 개수 찾기 SQL 에서 Where 1=1은 왜 쓰는걸까 요약 : 가독성을 위해서 / 주석처리 하려고 0. 무슨뜻 ? 1=1 말그대로 참 딱히 의미를 가지는건 아님 1. 어디서 사용? 쿼리를 다시 한번 훑을때 (디버깅) 주석처리하기 편하다 WHERE push_type_cd = '1' AND reg_dttm >= '2022-03-29'대신 WHERE 1 = 1 AND push_type_cd = '1' AND reg_dttm >= '2022-03-29'을 쓰면 WHERE 1 = 1 -- AND push_type_cd = '1' => 여기만 주석처리 쉽게 가능 ! AND reg_dttm >= '2022-03-29'이렇게 쉽게 주석처리 가.. 2022. 11. 15.
6. RFM Segmentation (SQL) 1. RFM 분석의 3가지 지표 집계하기 - Recency: 최근 구매일 - 최근에 구매하였는가? - Frequency: 구매 횟수 - 얼마나 자주 구매하였는가? - Monetary: 구매 금액 합계 - 얼마나 돈을 썼는가?2. 원리는 아래의 사진과 같다 3. 순서대로 진행 ! 1 먼저 집계 테이블을 구하는데 위에 분류된 기준을 사용해 컬럼을 생성해준다. select customer_id, count(customer_id) as frequency, sum(sales) as monetary, max(order_date) AS recent_order from records group by customer_id 2 그다음 나이브하게 5등분으로 나누어 준다. 위에서 만든 테이블은 CTE 형식으로 나타내어 주어도.. 2022. 11. 15.
반응형