25.3.29TIL

황효정·2025년 3월 29일

데이터 분석

목록 보기
28/88

오늘은 그 과제 sql문제를 풀어보았는데, 처음부터 막혀버렸다. 그 sql배우다가 파이선으로 넘어가서 또 배우다가 또다시 sql로 넘어오니까 아 sql 어떻게 쓰더라..가 되었다. 그 약간 파이선 사용하던 문법이랑 이런게 또 머릿속에 들어오다보니까 에...약간 이런상태가 되었는데 다행히 회복했다. 그래도 쓰던게 있어서.. 다행이다.

문제풀면서 서브쿼리에 대해서 다시 복습하는 시간을 가졌다.
일단 스칼라 서브쿼리는 select절에서 사용하는 서브쿼리이다.
오늘 디비버로 사용하면서 알게된 사실은 스칼라서브쿼리는 무조건 단일 행과 열을 가져와야 한다는 것이다. 그냥 테이블에서 한 컬럼만 가져올려고 했더니 에러가 났는데, 그 에러는 다음과 같았다.

그래서 알고보니 스칼라 서브쿼리는 '반드시 단일 값'=하나의 행과 하나의 열 을 반환해야 한다는 것을 알게 되었다.
그리고 다시 스칼라 서브쿼리를 복습하려고 라이브세션 했던 내용을 복습을 했는데, 거기에 이렇게 써있었다. -> 스칼라 서브쿼리 이용을 위해서는 ,서로다른 테이블이 필요하다고 한다...음,, 그럼 내가 풀고 있는 문제는 스칼라 서브쿼리를 사용하지 못하겠구만.
알면 알수록 더 넓고 심오한 서브쿼리의 세계. 읽어도 솔직히 다 이해 못하겠다.. 하나씩 풀어가면서 개념을 다시 잡아보자.

과제1.쉬움이라고 하셨지만,, 나에겐 어려움이다. 일단 문제가

카카오 광고 분석을 위한 ad_events 테이블이 있습니다.
2022년 동안 발생한 클릭률(Click-Through Rate, CTR)을 계산하는 SQL 쿼리를 작성하세요.
결과는 ad_id 기준으로 오름차 정렬하세요. 소수점 둘째 자리까지 반올림하여 출력하세요.
📌 CTR(클릭률) 공식:
CTR = 100.0 * ( Click 수 / Impression 수 )

이건데, 내가 어려운것은. Click 수와 Impression 수가 같은 컬럼 안에 있는데 각각 count값을 어떻게 빼내오지 였다.(물론 그 외에는 쉬워서 누구든 이 부분을 고민하겠지만. 그리고 튜터님도 이부분에 대해서 풀수 있는지 물어보고 싶으셨던 것 같다)

그래서 생각해본 쿼리

답 예시를 보니까 그 ad_id로 group by로 묶어준 듯 보였다. 어쨌든 이렇게 하면 ad_id별로 클릭수를 구할 수는 있는데, 문제는 impression수를 어떻게 구하느냐이다..
조금 더 고민해보겠다. 내가 도대체 어떤 지식을 알아야 이 문제를 풀 수 있을까?

아예 테이블 두개를 만들어서 join해야하나 라는 생각도 들었다.. 한 테이블은 클릭, 한 테이블은 임프레션 해가지고 그거 합쳐서 각각 카운트 해야하나.

만들어본 쿼리와 그 실행결과...이거 아닌것 같음... 뭐가 문제지..? 어떻게 다가가야하지..?(참고. round함수는 아예 안씀.. 써봤자 결과가 똑같음..)


하... 결국 쳇지피티 친구의 힘을 빌려서 case when 구문에 count를 씌울 수 있다는 것을 알게 되었다.. 이게 맞을려나,,,? 근데 then 다음ㅇ ㅔ1오는건 처음 보는 방법이다. 저거를 카운트 씌워줘서 1값을 세는것... 왜 내머리로는 이해가 쉽지않다., 아 너무 피곤해..

profile
청지기

0개의 댓글