- 그리디
- 백트래킹
- Queue
- Tree
- 이진트리
- 큐
- outer join
- N:1
- SQL
- Article & User
- regexp
- 쟝고
- 스택
- create
- update
- 완전검색
- Vue
- distinct
- stack
- count
- 뷰
- Django
- 트리
- delete
- 통계학
- M:N
- DB
- drf
- ORM
- migrations
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
목록SQL/문제풀이 (93)
데이터 분석 기술 블로그
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에서 사용할 수 있는 것을 몰랐다.
문제 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..
문제 2: 중복 데이터 필터링데이터셋: ordersorder_idcustomer_idtotal_amount110130021025003101700410320051021000 문제각 고객(customer_id)의 **가장 큰 주문 금액(total_amount)**을 출력하세요. CREATE TABLE orders ( order_id INT PRIMARY KEY, customer_id INT, total_amount INT);INSERT INTO orders (order_id, customer_id, total_amount) VALUES(1, 101, 300),(2, 102, 500),(3, 101, 700),(4, 103, 200),(5, 102, 1000);SELECT customer_id..
문제 1: 직원 급여가 평균 이상 인 직원 찾기데이터셋: employeesidnamedepartment_idsalary1Alice101600002Bob102450003Charlie101700004David103400005Eve10155000 문제employees 테이블에서 평균 급여보다 높은 급여를 받는 직원의 이름과 급여를 출력하세요. CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), department_id INT, salary INT);INSERT INTO employees (id, name, department_id, salary) VALUES(1, 'Alice', 101, 60000),(2, 'Bob', 102,..
SELECT user_id, CONCAT( UPPER(SUBSTRING(name, 1, 1)), LOWER(SUBSTRING(name, 2))) AS nameFROM Users; SolutionSELECT user_id, CONCAT( UPPER(SUBSTRING(name, 1, 1)), LOWER(SUBSTRING(name, 2))) AS nameFROM Users; SUBSTRING 함수는 문자열에서 원하는 부분만을 추출하기 위해 사용하였고,UPPER과 LOWER은 각각 대문자 소문자로 변환해준다.후에 대문자인 첫 글자와 소문자인 나머지 글자를 합쳐줄 CONCAT 함수를 사용한다.