- 큐
- ORM
- 트리
- outer join
- 완전검색
- delete
- M:N
- distinct
- N:1
- update
- drf
- count
- SQL
- 그리디
- Queue
- 스택
- 뷰
- Vue
- Article & User
- Tree
- regexp
- stack
- migrations
- Django
- 백트래킹
- 이진트리
- 쟝고
- create
- 통계학
- DB
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
목록전체 글 (421)
데이터 분석 기술 블로그
SELECT DISTINCT(l1.num) AS ConsecutiveNumsFROM Logs l1JOIN Logs l2 ON l1.id = l2.id - 1JOIN Logs l3 ON l1.id = l3.id - 2WHERE l1.num = l2.num AND l2.num = l3.num;ConsecutiveNums만 구하면 되는 거니까 만약에 1 1 1 2 1 1 1이어도 1이 두 번 Output에 나올 필요는 없다. 따라서 DISTINCT(l1.num)으로 구하면 된다.
SELECT product_id, year AS first_year, quantity, priceFROM SalesWHERE (product_id, year) IN (SELECT product_id, MIN(year) FROM Sales GROUP BY product_id);
SELECT ROUND(AVG(order_date = customer_pref_delivery_date) * 100, 2) AS immediate_percentageFROM DeliveryWHERE (customer_id, order_date) in ( SELECT customer_id, min(order_date) FROM delivery GROUP BY customer_id);AVG(condition) 활용법:SQL에서 조건식(condition)을 AVG()에 넣으면, 조건이 참인 행들의 비율을 계산할 수 있다.예: AVG(order_date = customer_pref_delivery_date)는 조건이 참인 경우 1로 간주하고, 평균을 계산하여 비율을 반환.WHERE (column..
SELECT ROUND(COUNT(DISTINCT(player_id)) / (SELECT COUNT(DISTINCT(player_id)) FROM Activity), 2) AS fractionFROM ActivityWHERE (player_id, DATE_SUB(event_date, INTERVAL 1 DAY)) IN ( SELECT player_id, MIN(event_date) FROM Activity GROUP BY player_id);WITH를 사용한 단계적 접근:첫 로그인 날짜 계산(FirstLogin)과 첫 로그인 다음 날 확인(NextDayLogin)을 별도 CTE로 분리하면 가독성과 디버깅이 쉬움.JOIN을 활용한 비교:JOIN을 사용하여 player_id와 첫 로그인 다음..
SELECT SUBSTR(trans_date, 1, 7) AS month, country, COUNT(id) AS trans_count, SUM(CASE WHEN state='approved' THEN 1 ELSE 0 END) AS approved_count, SUM(amount) AS trans_total_amount, SUM(CASE WHEN state='approved' THEN amount ELSE 0 END) AS approved_total_amountFROM TransactionsGROUP BY month, country; SELECT에서 필터링한 것도 GROUP BY에서 사용할 수 있는 것을 몰랐다.
ROW_NUMBER 함수란?"ROW_NUMBER()" 함수는 사용되는 윈도우 함수(Window Function) 중 하나로, 특정 정렬 기준에 따라 각 행에 고유한 일련번호를 부여합니다. 동일한 값이 있어도 고유한 번호를 부여하며, 중복 순위는 없습니다.ROW_NUMBER 기본 문법ROW_NUMBER() OVER ([PARTITION BY column] ORDER BY column ASC|DESC) OVER: ROW_NUMBER() 함수가 적용될 데이터의 범위와 정렬 기준을 지정합니다.PARTITION BY column: 데이터를 특정 열로 그룹화하여 그룹별로 행 번호를 매깁니다(옵션).ORDER BY column ASC|DESC: 지정된 열을 기준으로 정렬하여 번호를 매깁니다.ROW_NUMBER 특징 ..
RANK 함수란?"RANK()" 함수는 순위를 매기는 윈도우 함수(Window Function)입니다. 특정 열의 값에 따라 각 행에 순위를 할당합니다. 값이 동일한 경우, 동일한 순위를 부여하며, 그다음 순위는 건너뜁니다(중복 순위 처리).RANK 기본 문법RANK() OVER ([PARTITION BY column] ORDER BY column ASC|DESC)OVER: RANK() 함수가 작동할 범위를 지정합니다.PARTITION BY column: 데이터를 특정 열로 그룹화하여 그룹별로 순위를 매깁니다(옵션).ORDER BY column ASC|DESC: 지정한 열의 값으로 순위를 매깁니다.RANK의 특징 동일 값에 동일 순위: 값이 같은 경우 동일한 순위를 부여합니다.순위 건너뜀: 동일 순위가 ..
인덱스란?"인덱스(Index)"는 데이터베이스에서 검색 속도를 향상하기 위해 사용하는 구조입니다. 책의 목차처럼 테이블의 특정 컬럼에 대해 빠르게 데이터를 찾을 수 있도록 돕습니다. 인덱스를 생성하면 데이터베이스가 해당 컬럼에 대해 정렬된 구조를 유지하여, 검색과 정렬 작업이 더 효율적으로 수행됩니다.인덱스의 개념 빠른 데이터 검색:테이블의 데이터 전체를 탐색(Full Table Scan)하지 않고, 인덱스를 통해 필요한 데이터를 빠르게 찾아냅니다.정렬된 데이터 구조:대부분의 인덱스는 B-Tree 구조를 사용하여 정렬된 상태를 유지합니다.추가 저장 공간:인덱스는 별도의 데이터 구조이므로 추가적인 저장 공간이 필요합니다.쓰기 작업의 부담:데이터를 삽입, 수정, 삭제할 때 인덱스를 갱신해야 하므로, 쓰기 성..