https://school.programmers.co.kr/learn/courses/30/lessons/299305

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

<처음에 쓴 오답>

WITH FINAL AS (
SELECT a.Parent_ID, b.ID
FROM ECOLI_DATA a
    LEFT JOIN ECOLI_DATA b
        ON a.PARENT_ID = b.ID
)

SELECT PARENT_ID AS ID , COUNT(ID) AS CHILD_COUNT
FROM FINAL
WHERE ID IS NOT NULL
GROUP BY parent_ID
ORDER BY ID

 

> CHILD_COUNT가 0인 경우도 나오게 해야 한다.

 

 

 

LEFT JOIN > ID를 기준으로 PARENT_ID를 붙여서 ID로 GROUP BY를 해야함

WITH FINAL AS (
SELECT a.ID, b.PARENT_ID
FROM ECOLI_DATA a
    LEFT JOIN ECOLI_DATA b
        ON a.ID = b.Parent_ID
)

SELECT ID, COUNT(Parent_ID) AS CHILD_COUNT
FROM FINAL
GROUP BY ID
ORDER BY ID

 

https://school.programmers.co.kr/learn/courses/30/lessons/298518

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

<정답>

-- 코드를 작성해주세요
SELECT COUNT(*) AS FISH_COUNT
FROM FISH_INFO a
   LEFT JOIN FISH_NAME_INFO b
        ON a.FISH_TYPE = b.FISH_TYPE
WHERE b.FISH_NAME = 'BASS' OR b.FISH_NAME = 'SNAPPER'

 

<오답>

SELECT COUNT(*) AS FISH_COUNT
FROM FISH_INFO a
   LEFT JOIN FISH_NAME_INFO b
        ON a.FISH_TYPE = b.FISH_TYPE
WHERE b.FISH_TYPE = 0 OR b.FISH_TYPE = 1

 

왜 이름으로 했을 때는 정답이고 type으로 가져왔을 때는 오답인지 잘 모르겠다.

https://school.programmers.co.kr/learn/courses/30/lessons/276034

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS 
WHERE SKILL_CODE & ( SELECT CODE FROM SKILLCODES WHERE NAME = 'Python') /*2진수 포함된것 찾기*/
    OR SKILL_CODE & ( SELECT CODE FROM SKILLCODES WHERE NAME = 'C#')
ORDER BY ID

https://school.programmers.co.kr/learn/courses/30/lessons/273711

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

SELECT b.ITEM_ID, a.ITEM_NAME, a.RARITY
FROM ITEM_INFO  a 
 JOIN ITEM_TREE b
    ON b.ITEM_ID = a.ITEM_ID   /*여기가 포인트임!!!!★*/
WHERE b.PARENT_ITEM_ID IN (SELECT ITEM_ID
                    FROM ITEM_INFO
                    WHERE RARITY = 'RARE'
                    )
ORDER BY ITEM_ID DESC

 

ORDER BY 까먹지 말기

SELECT NAME
FROM ANIMAL_INS
ORDER BY DATETIME
LIMIT 1;

 

LIMIT 1 > 하나만 가져올 수 있음

가장 먼저 들어온 경우 > ASC로 ORDER BY 

250425 금요일

오늘도 데이터 뽑는 노예가 되었다.
똑같은 걸 몇번 하고 있는지 모르겠다.



앱팝업 성과 모니터링

노출 로직 변경 전 4/10~4/16 vs 변경 후 4/17~4/23 구분해서
로그인 회원수, 노출회원수, 반응 회원수를 비교하는 판이었다.

“Action회원”에 대한 정의를
<데일리로 클릭한 당일 + 당일action>으로 하셨는데
내가 담당하고 있는 상품의 경우
데일리로 보는 것이 아니라

4/9일 고객의 결제 비율에 비해
4/16일 비율이 하향했다면
비율변경 성공 으로 정의했다.

1) 4/9
2) 4/10~4/16
3) 4/17~4/23

각각의 기간을 큰 덩어리로 보면 되는 것이다.

4/17~4/23도 하나의 기간으로 보고 마찬가지로
4/16일 vs4/23기준으로 확인했다.


+ 추가된것
한도하향 대상자, 고객 세그별로 나누라고 함
성과를 1주일 단위로 쪼개서 보라고 함.

하..

그렇게 쪼개서 보면 뭐 원인이 보이세요?
라고 하고 싶지만
아무말도 하지 않고 다 뽑았다.
내 장점은 손이 빠르다는 점이다.


변경된 앱팝업 로그 찾기


로그는 UTM같은 개념이다.
프로덕트 팀에서 바뀐 로그값을 공유를 안해주기 때문에 , 4/17일 이후 클릭수를 찾았을 때 숫자가 안 나왔다.
(프로덕트에서 반영하면 공유를 좀 해줬으면 좋겠다. 팀 내에도 공유가 안되는데 팀 끼리 공유가 될리가 있나 싶지만..)

그럴 때는 전체 앱유입 테이블에서
로그 값을 group by로 전체를 확인한다

모든 앱의 화면을 볼 필요는 없고,

팝업 이후의 화면만 보면 된다.
그러면 로그는
팝업:~~~~
이렇게 만들어져있어서~~~에 해당되는 것을 찾는 것
일일히 노가다로 생각하면 됨.


노출율과 액션율이 떨어지는 이유?


이번 반영 이슈는 1로그인 1회로 띄워주던 것을 1일 1회 노출로 바뀐것. 그 이후 노출율과 action율이 떨어졌다.

사실 나는 당연하다고 생각했다. 우리가 앱에서 한번 보고 사라지는 앱을 얼마나 클릭할까? 최소한의 친숙도는 쌓아줘야 한다고 생각함

피로도 vs 친숙도 사이의 적절한 노출 로직을 찾는게 중요하다는 것을 알게 되었음.


차장님은 한도하향된 애들(금융상품을 잘 이용하지 않을애들)이 많이 유입되서 그런것 같다고 하신다.
지금 계속 보고 자료를 만드시는 중이라 어떻게 흘러길지 잘 follow up을 해야겠디.

앱팝업 노출 로직 공부하기
그로스 마케팅쪽으로 가도 좋을 것 같다. 각 앱 사용 흐름에 따라 노출, 클릭율 보는 거 재밌다.



LMS물량 부족으로 인해 캠페인 재 적재


자동화 시스템 마케팅이 1주일 진행했을 때 우리 상품에서 33만 발송하고 있었다. 사실 그게 그렇게 많다고는 생각이 안드는데 팀 마다 발송할 수 있는 물량이 제한이 되어 있기 때문에 조정이 필요했다. 앱푸시 채널로 변경했음

50만원 이상 트리거 발생시 비율변경, 가입 캠페인은 푸시로 변경함

무이자 할부 발생시 변경, 가입은 15만으로 설정했는데
15만 이상이 될 경우 프로그램이 돌지 않아서
14만999명으로 조정해서 재 상신


중복 어카운트, 발송 3회가 잘 나가고 있는지 확인하기


발송이 2.5회 나가는 이유, 적재 조차 2.5가 되어 있지 않는 이유에 대해 다른 분이 원인데 대해서 여쭤보셨다. 사실 나도 좀 찜찜했는데 뭉개고 있었던 거다.

- 이거 좀 찜찜한데? 싶은 것은 반드시 철저하게 파악을 해야한다.


DW에서 드디어 필터링을 찾을 수 있는 테이블을 찾았다.
- 발송 전후 에 따라서 필터링을 확인하는 칼럼이 달랐음 나는 발송 후 필터링 이름만 붙여서 타 상품 우선순위에 대한 건 확인할 수 없었다. 모니터링에 추가할 예정이다.




다음 모니터링에서 추가할 것
1. 발송 전 필터링, 발송 후 필터링 확인 - 커버리지 떨어지는 원인 파악하기
2. 발송 3회 안나가고 있는 이유
3. 전체 모수에서 해당 상품 발송 가능대상자를 추가해야겠다.


오늘의 인사이트



일이 점점 많아진다. 힘든데 좋다(?)
그만큼 내가 할 수 있다고 생각해서 믿고 시킨다고 생각함.
나도 좀 더 내가 할 수 있는 업무 범위를 넓히고 싶다.
시키는 것을 하나하나 최선을 다하면 누군가는 보고 있다.

'업무일기' 카테고리의 다른 글

업무일기(1) 숫자검증  (0) 2025.04.29

2025.04.28 월요일

업무1. 주단위 모니터링


월요일이면 데일리 업무로
주보 모니터링이 있다.
1주일 단위로 캠페인 적재, 발송, 액션율을 측정하는 것이다. 그 중에서 나는 푸시, 카카오톡, 문자에 대한 모니터링을 담당한다.

오늘은 비교적 여유가 있는 날이라서

1) 캠페인 아이디를 전부 다 가져와서 뽑는 쿼리와
2) Like %% 구문을 통해서 가져온 쿼리가
차이가 있는지 확인했다.

원래 다르면 안되는데, 가끔 값이 다르게 나와서 검증하는 작업을 거쳤다.

발송 건수는 같게 나오는데 적재 건수가 다르게 나왔다. 각각의 쿼리에서 캠페인 아이디를 전부 뽑아서 차이가 있는 캠페인 아이디를 확인햇다.

적재DB같은 경우는 당일 발송 까지 나오는데,
발송DB는 전일 발송까지만 데이터가 들어가 있다.
그래서  캠페인 아이디를 직접 넣은 쿼리는 전날 적재 캠페인까지만 나오고 라이크에서는 당일까지나와서 차이가 있었던 것.

이건 중간 모니터링이기 때문에 차이가 있는 것이고, 월 단위로 모니터링할대는 문제가 없을 것 같다.

인사이트 : 숫자 검증은 처음부터 찬찬히 해야 한다. 쿼리의 맨 처음부터 다르게 나오는 것은 없는지 꼼곰히 확인할 것


'업무일기' 카테고리의 다른 글

업무일기(2) 데이터 뽑는 노예  (0) 2025.04.29

+ Recent posts