- 완전검색
- 통계학
- count
- DB
- drf
- migrations
- Queue
- Vue
- 그리디
- SQL
- Article & User
- M:N
- N:1
- update
- 큐
- regexp
- 스택
- delete
- Django
- Tree
- 이진트리
- distinct
- 트리
- 백트래킹
- 쟝고
- 뷰
- outer join
- ORM
- create
- stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
목록전체 글 (300)
데이터 분석 기술 블로그
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 구조를 사용하여 정렬된 상태를 유지합니다.추가 저장 공간:인덱스는 별도의 데이터 구조이므로 추가적인 저장 공간이 필요합니다.쓰기 작업의 부담:데이터를 삽입, 수정, 삭제할 때 인덱스를 갱신해야 하므로, 쓰기 성..
문제 3: 특정 날짜 이후의 거래 내역데이터셋 1: transactionstransaction_idcustomer_iddateamount11012023-01-0120021022023-03-1550031032023-02-1030041012023-04-2040051022023-05-25600 데이터셋 2: customerscustomer_idname101Alice102Bob103Charlie 문제'Alice' 고객이 거래한 가장 최근 날짜 이후에 거래한 모든 고객의 이름과 거래 내역을 출력하세요. CREATE TABLE transactions ( transaction_id INT PRIMARY KEY, customer_id INT, date DATE, amount INT);CREATE..