일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서브쿼리
- SQL고득점KIT
- 데벨챌
- 데이터리안실전반
- 데이터분석
- join
- SQL
- 데이터리안넥스트레벨챌린지
- 셀프조인
- 그로스해킹
- 코테후기
- levle1
- 활성사용자수
- sql50
- 위키독스
- with절
- 데이터리안
- 파이썬
- 프로그래머스문풀
- 파이썬문풀
- leetcode문풀
- mysql
- 시간함수
- 프로그래머스
- leetcode
- 문풀
- 코테준비
- 티스토리챌린지
- sql문풀
- 오블완
- Today
- Total
목록SQL/SQL문풀 (48)
Data Marketer’s Note

출처: [leetcode - SQL50] : 1341. Movie Rating 문제: 동일한 횟수나 평점이 나온 경우 이름을 기준으로 오름차순하여 1개 만 선택ORDER BY로 정렬하여 찾기1) 동점이 나올 경우 유저 이름 순으로 1순위를 선택하므로, 유저이름이 있는 users테이블과 movierating테이블을 join2) name으로 group by하여 이름이 나온 횟수 = 영화를 본 횟수를 count하여 내림차순, 이름순으로 오름차순3) LIMIT1으로 가장 횟수가 큰 유저의 이름을 선택4) 동일한 방식으로 평점이 가장 높은 영화 이름을 선택5) 이름에 대한 별칭을 results 동일하게 주고 UNION ALL로 통합하여 결과 출력 (SELECT name AS resultsFROM MovieR..

출처: [leetcode - SQL50] : 626. Exchange Seats 문제: 연속된 학생의 좌석 ID를 교환(학생 수가 홀수인 경우 마지막은 교환없이 반환)1. 홀수, 짝수 이용하기1) id를 2로 나눴을 때 나머지를 기준으로 홀수면 id +1을, 짝수면 id-1을 해서 순서를 변경2) id가 max값인 경우 else로 그대로 출력SELECT CASE WHEN id % 2 = 1 AND id + 1 2. IF 활용하기1번과 동일하게 홀수, 짝수를 활용하는 방법=> case when이 아닌, if를 활용하는 방법SELECT IF(ID % 2 = 0, ID - 1, IF(ID = (SELECT MAX(ID) FROM SEAT), ID, ID + 1)) AS ID,..

출처: [leetcode - SQL50] : 1907. Count Salary Categories 문제: 조건에 해당하는 카테고리별 숫자를 count하기1. UNION 활용하기카테고리명과 카테고리의 수의 이름을 동일하게 작성하여각 카테고리를 UNION하는 방법 *컬럼의 이름이 같은 경우 UNION은 하나의 컬럼으로 합쳐진다SELECT 'Low Salary' AS category, COUNT(*) AS accounts_countFROM AccountsWHERE income = 20000 AND income 50000;

출처: [leetcode - SQL50] : 180. Consecutive Numbers 1. 윈도우 함수 LEAD OVER 활용하기1) NUM을 기준으로 LEAD OVER을 사용하여, 1개 전과 2개 전의 값을 NUM2,NUM3로 지정2) SELECT문에서 NUM과 NUM1이 같으면서 NUM2의 값도 같은 값을 구하기(distinct로 3회 연속인 숫자가 여러번 발생해도 1개만 조회)WITH lead_num AS ( SELECT NUM, LEAD(NUM, 1) OVER() AS NUM1, LEAD(NUM, 2) OVER() AS NUM2 FROM LOGS)SELECT DISTINCT NUM AS ConsecutiveNumsFROM lead_nu..

출처: [leetcode - SQL50] : 1045. Customers Who Bought All Products 서브쿼리와 HAVING 조건 절 이용하기cutomer_id별로 구매한 제품의 수를 센 것과 서브쿼리로 전체 제품의 종류 수를 센 것이 같으면 조회SELECT customer_id FROM Customer GROUP BY customer_idHAVING COUNT(distinct product_key) = (SELECT COUNT(product_key) FROM Product)

출처: [leetcode - SQL50] : 550. Game Play Analysis IV 문제: 첫 로그인 이후 다음날 연속해서 로그인한 플레이어의 비율을 계산 WITH절 이용하기1) player별로 처음으로 접속한 날을 조회하는 WITH절 생성2) 첫접속일 WIHT절과 player_id가 같고, 접속일이 +1일 때 JOIN하는 WITH절 생성3) 원본 df과 2번 df을 LEFT로 JOIN(연속 접속하지 않은 사용자도 포함되도록),2번 df의 player_id수 / 원본 df의 player_id의 수로 비율 구하기WITH FirstLogin AS ( SELECT player_id, MIN(event_date) AS first_login_date FROM ..