
https://www.mindtheproduct.com/being-the-only-one-lessons-in-leadership-integrity-and-resilience/
https://www.lennysnewsletter.com/p/everyone-should-be-using-claude-code
if() - 대상 선택 - null 로 치환if(rating <> 'Not given', rating, null) new_ratingwhere 칼럼명 is not null
null: 데이터로 취급하지 않겠다는 선언
- 집계 함수에서의 제외:
SUM,AVG,COUNT같은 함수를 쓸 때 NULL은 계산 대상에서 제외
- 예: [10, 20, NULL]의 평균을 구하면 (10+20)/3이 아니라 (10+20)/2로 계산됩니다.
개념 정의 0 숫자가 0이라는 '값'이 있음. 공백 ' '비어있는 문자열이라는 '값'이 있음. Null 모르는 데이터
Nullification 예시 조치 이유 설문조사 미응답 null 0점으로 처리하면 평균 점수가 깎여서 데이터가 왜곡됨 측정기기 오류값 null 잘못된 수치가 포함되면 전체 합계나 추세가 틀어짐 탈퇴한 회원 이름 null 개인정보를 지우되, 활동 기록은 남겨야 할 때
if(조건, true값, false값)if (age >= 10, age, 10) // 10 미만의 나이 데이터 값을 모두 10으로 대체해줘
if (phone IS NULL, '없음', phone) // 휴대폰 번호가 없으면(NULL) '없음'이라고 표시해
coalesce(값1, 값2, 값3 ···) -> 앞에서부터 검사해서 NULL이 아닌 녀석이 나오면 바로 반환coalesce(home_phone, cell_phone, '연락처 없음')
//집 전화번호가 없으면 휴대폰 번호를 쓰고, 그것도 없으면 '연락처 없음'이라고 해줘.
coalesce(컬럼, 0) : 데이터가 없을 때 기본값(0이나 빈 문자열)을 채워 넣는 용도[Query Example]
select a.order_id, a.customer_id, a.restaurant_name, a.price, b.name, b.age, coalesce(b.age, 20) "null 제거", b.gender from food_orders a left join customers b on a.customer_id=b.customer_id where b.age is null
min혹은 max 값으로 반환case when 사용select case when age < 10 then 10
when age > 90 then 90 end "new_age"
from customers
| B1 | B2 | B3 | |
|---|---|---|---|
| A1 | |||
| A2 | |||
| A3 |
select 행 데이터 컬럼
max(if(조건, true값, false값)) "축 컬럼명"
[예제1] 음식점별 시간별 주문건수 Pivot Table 뷰 만들기 (15~20시 사이, 20시 주문건수 기준 내림차순)
select+ 행 축 데이터가 있는 칼럼 호출 +max(if())- max 구문 줄 바꿀 때 마다
,로 구분!!
[예제2] 성별, 연령별 주문건수 Pivot Table 뷰 만들기 (나이는 10~59세 사이, 연령 순으로 내림차순)
- 칼럼의 이름을 호출 할 땐
''사용max()sum()구문 사용시group by필수!
1. Rank 함수
rank() over(partition by 분류기준 order by 정렬기준) "칼럼별명"
[예제] 음식 타입별로 주문 건수가 가장 많은 상점 3개씩 조회하기!
rank() over(partition by cuisine_type // 퀴진 타입 별로 랭크를 매겨줘 order by cnt_order desc) // 주문 건수가 많은 순(내림차)으로 랭크를 매겨 ranking // 해당 칼럼 명칭을 ranking으로 지정해
2. SUM 함수
sum() -> group by vs sum() over()
GROUP BY (데이터 압축)
지정한 칼럼을 기준으로 데이터를 뭉친다.
그 과정에서 개별 데이터(Row)는 사라지고 그룹당 딱 한 줄씩만 남는다.
SELECT 부서, SUM(급여)
FROM 직원
GROUP BY 부서;
// 결과: 부서가 3개라면 딱 3줄만 출력
WINDOW FUNCTION (데이터 유지)
sum() over()를 사용하면 원본 데이터의 모든 행이 그대로 유지
각 행 옆에 해당 그룹의 합계가 추가로 붙는 식
SELECT 이름, 부서, 급여,
SUM(급여) OVER(PARTITION BY 부서) as 부서총급여
FROM 직원;
// 결과: 직원이 100명이면 100줄이 다 출력되고, 옆에 부서 합계가 붙는다
[예제] 각 음식점의 주문건이 해당 음식 타입에서 차지하는 비율을 구하고, 주문건이 낮은 순으로 정렬했을 때 누적 합 구하기
over(partition by cuisine_type order by cnt_order)
-> 퀴진 타입별로 합계를 구하는데, 주문 수량 순으로 정렬한 다음 누적 연산해- "cum_cuisine" 값이 9로 시작하는 이유는 cnt_order로 정렬했을 때 값이 1인 식당 간의 우위를 정할 수 없어서 한번에 계산이 적용됐기 때문.
date() 로 날짜 데이터화 가능[예제1]년도별 3월의 주문건수 구하기
'%Y''%m%d'--> 날짜 포맷은''- date_format으로 리포맷 된 데이터는
숫자X문자로써의 숫자임.
- 따라서
'03'과 같이 적어야함.- where문에서 별명으로 호출 안됨. date_format 함수 그대로 부르기.
- 일요일 = '0' ··· 토요일 = '6'
1-1, 1-2 수강PM은 단순히 기능을 만드는 사람이 아니라 전략과 실행을 통해 가치를 창출하는 역할임.
현업에서 혼용되기도 하지만, 각 직무가 집중하는 핵심 영역은 다음과 같음.
| 구분 | 핵심 역할 | 주요 특징 |
|---|---|---|
| PM | 프로젝트 성장 | 사용자 및 비즈니스 관점의 균형 |
| 서비스기획자 | UX/UI 설계 | 사용자 경험 집중 및 서비스 환경 구축 |
| PO | 프로덕트의 탄생 | "0->1" 프로덕트의 태동기 담당 |
프로덕트를 운영하는 조직의 성격에 따라 PM의 업무 범위와 목적이 달라짐.
대기업 산하 SI(System Integration) 회사란?
그룹사 전담 SI는 에이전시와 인하우스의 성격이 섞여 있으나, 실질적으로는 에이전시에 가까움.
- 인하우스
- 예산을 쓰는 부서
- 서비스의 성과(매출, DAU 등)가 곧 평가지표
- SI 에이전시
- 이익을 남겨야하는 회사
- '오너십'보다는 '계약'과 '납기' 중심.
- 정해진 기간 내 시스템을 사고 없이 구축하는 것이 최우선
- 존재 이유: 그룹 내 IT 보안 및 리스크 관리, 전문 인력 관리의 효율성, 대외 사업 확장을 위해 별도 법인으로 운영됨.