Programing Language
-
mysql 기본 NULL 처리 함수들Programing Language/SQL 2025. 6. 17. 11:09
COALESCE (표준 SQL) sqlCOALESCE(col1, col2, '기본값') -- 첫 번째 non-NULL 값 리턴COALESCE(amount, 0) -- amount가 NULL이면 0IFNULL (MySQL 전용) sqlIFNULL(amount, 0) -- amount가 NULL이면 0IFNULL(customer_name, '미등록') -- NULL이면 '미등록'ISNULL / IS NULL sql-- 조건문에서WHERE amount IS NULL -- NULL 체크WHERE amount IS NOT NULL -- NOT NULL 체크SELECT ISNULL(amount) -- NULL이면 1, 아니면 ..
-
mysql 실무 적용 코딩 (월별 리텐션 분석)Programing Language/SQL 2025. 6. 17. 10:55
상황 : oo님 우리 회사 2025년 1~5월까지 월별 리텐션 분석 자료 부탁해요..asap 1단계 설계리텐션 비중 : 월 방문자 수/첫 월 방문자 수 단계고객별 첫 방문 월고객별 월 데이터 셋팅첫 월, 기준 월, 월 간 gap, 첫 월 유저 수, 기준 월 유저 수, 리텐션 비율 sql 쿼리 작성-- inner join with cust_first_month as ( --고객별 첫 방문 월 select cust_id , min(date_format(order_date, '%Y-%m')) first_ym from orders group by cust_id), cust_orders as ( --고객별 월 데이터 셋팅 select cust_id , date_format(o..
-
MySQL 데이터 타입 변환 ( cast)Programing Language/SQL 2025. 6. 17. 10:30
sql-- 숫자 변환CAST(amount AS SIGNED) -- 정수CAST(amount AS DECIMAL(10,2)) -- 소수점CAST(amount AS UNSIGNED) -- 양의 정수-- 문자열 변환 CAST(user_id AS CHAR) -- 문자열CAST(user_id AS CHAR(10)) -- 길이 지정-- 날짜 변환CAST('2025-01-15' AS DATE) -- 날짜CAST('2025-01-15 14:30:00' AS DATETIME) -- 날짜시간CAST('2025-01-15 14:30:00' AS TIME) -- 시간
-
mysql 실무 적용 코딩 (일별로 최근 30일에 대한 rolling mau 구하기)Programing Language/SQL 2025. 6. 17. 09:26
상황 : oo님 우리 회사 2025년 5월에 대해서 일별로 최근 30일에 대한 rolling mau 좀 구해주세요. ASAP! 1단계 설계mau 개념 : 월별 활동 유저 수일별 mau 개념 : 현재 일자 기준 최근 30일에 대해 활동 유저 수로직 설계기준 일자 생성유저 데이터 붙이기(현재 일자부터 최근 30일일자까지)일자별 유저 수 집계 sql 쿼리 작성-- 일자별 유저 수 집계select a.activity_date , count(distinct u.customer_id) user_cntfrom ( -- 기준 일자 생성 select distinct activity_date from users) a-- 유저 데이터 붙이기(현재 일자부터 최근 30일일자까지)inner join users u on u...
-
mysql 실무 적용 코딩 (고객별 매출 요약)Programing Language/SQL 2025. 6. 17. 07:20
상황 : oo님 우리 회사 최근 6개월 데이터 기준으로 고객별 신규,기존 구분해서 매출 요약 분석 좀 해주세요. 1단계 설계신규,기존 고객 구분 : 해당 기간에 대해서 고객별 최초 주문 월 가지고 신규 구분하기매출 요약 지표고객별 매출, 비중고객별 주문량, 비중주문당 평균 매출 금액 sql 쿼리 작성-- 기존 버전with customer_min_month as ( select customer_id, min(date_format(order_date,'%Y-%m')) as min_month from orders group by customer_id)select c.ym, case when c.ym = cm.min_month then '신규' else '기존' e..
-
해커랭크 SQL Project Planning (연속 날짜, GAP 분석)Programing Language/SQL 2025. 6. 16. 17:01
https://www.hackerrank.com/challenges/sql-projects/problem SQL Project Planning | HackerRankWrite a query to output the start and end dates of projects listed by the number of days it took to complete the project in ascending order.www.hackerrank.com문제 정의 (영어 -> 한국어 번역 후 문제 파악하기)Task_ID , Start_Date , End_Date 라는 세 개의 열이 있는 Projects 테이블이 주어졌습니다 . 테이블의 각 행에서 End_Date 와 Start_Date 의 차이는 1 일 입니다 . ..
-
해커랭크 Symmetric Pairs (셀프 JOIN, 조건)Programing Language/SQL 2025. 6. 16. 15:32
https://www.hackerrank.com/challenges/symmetric-pairs/problem Symmetric Pairs | HackerRankWrite a query to output all symmetric pairs in ascending order by the value of X.www.hackerrank.com문제 정의 (영어 -> 한국어 번역 후 문제 파악하기) X 와 Y라는 두 개의 열이 포함된 함수 테이블이 주어졌습니다 .두 쌍 (X 1 , Y 1 ) 과 (X 2 , Y 2 ) 는 X 1 = Y 2 이고 X 2 = Y 1 일 때 대칭 쌍 이라고 합니다 .X 값을 기준으로 모든 대칭 쌍을 오름차순으로 출력하는 쿼리를 작성하세요 . X 1 ≤ Y 1 이 되는 행을 나열하세..