[내일배움캠프-퍼포먼스 마케터] 본캠프 47일차

이석민·2025년 6월 27일
post-thumbnail

오늘 학습한 내용

SQL 코드카타

문제

테이블:Customer

+-------------+---------+ 
| 열 이름 | 유형 | 
+-------------+---------+ 
| customer_id | int | 
| product_key | int | 
+-------------+---------+ 
이 테이블에는 중복된 행이 포함될 수 있습니다. NULL이 아닙니다. 
product_key는 테이블에 대한 외래 키(참조 열)입니다 .

customer_id.Product
 

테이블:Product

+-------------+---------+ 
| 열 이름 | 유형 | 
+-------------+---------+ 
| product_key | int | 
+-------------+---------+ 
product_key는 이 테이블의 기본 키(고유한 값을 갖는 열)입니다.
 

Customer테이블에 있는 모든 제품을 구매한 고객 ID를 테이블에서 보고하는 솔루션을 작성하세요

결과 표를 원하는 순서 대로 반환합니다 .

작성 쿼리

select customer_id
from Customer
group by customer_id
having count(distinct product_key) = 
(select count(distinct product_key) from Product)

설명
총 제품 수 count

SELECT COUNT(product_key) FROM Product : 전체 제품 수를 파악
각 고객이 구매한 개별 제품을 계산
GROUP BY customer_id : 각 고객을 개별적으로 처리
HAVING COUNT(DISTINCT product_key) = (total products) :
모든 제품을 구매한 고객을 필터링
적격한 customer_ids 만 반환

이 HAVING조항은 모든 제품을 구매한 고객만 포함되도록 보장

PYTHON 코드카타

문제

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 
예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 
자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

제한 조건
x는 1 이상, 10000 이하인 정수입니다.

나의 풀이

def solution(x):
    sum_num = 0
    for num in str(x):
        sum_num += int(num)
        if x % sum_num == 0:
            answer = True
        else :
            answer = False
    return answer

찾아본 제너레이터 표현식

def solution(x):
    return x % sum(int(digit) for digit in str(x)) == 0

배운점
파이썬에서 들여쓰기에 대한 중요성을 느꼈다.
들여쓰기를 제대로 하지 못해서 결과에 계속 오류가 났다.
또한 for문을 제너레이터 표현식으로 한줄로 명료하게 답을 낼 수 있는것에 대해
생각은 했지만 나 스스로 코드를 작성하지는 못했다.
아직 파이썬의 기초에 대해 조금 더 공부해야 될 것 같다.

통계학 학습 내용

1. 재현 가능성
우연히 결과가 나오는 것이 아닌, 항상 일관된 결과가 나오는지 확인해야 한다!

2. p-해킹

  • 데이터 분석을 반복하여 p-값을 인위적으로 낮추는 행위
  • 유의미한 결과를 얻기 위해 다양한 변수를 시도하거나, 데이터를 계속해서 분석하는 등의 방법을 포함

문제점

  • p-해킹은 데이터 분석 결과의 신뢰성을 저하시킴

3. 선택적 보고

  • 유의미한 결과만을 보고하고, 유의미하지 않은 결과는 보고하지 않는 행위
  • 이는 데이터 분석의 결과를 왜곡하고, 신뢰성을 저하시킴

4. 자료수집 중단 시점 결정
데이터 수집을 시작하기 전에 언제 수집을 중단할지 명확하게 결정하지 않으면, 원하는 결과가 나올 때까지 데이터를 계속 수집할 수 있음. 이는 결과의 신뢰성을 떨어뜨림.

5. 데이터 탐색과 검증 분리

  • 데이터 탐색을 통해 가설을 설정하고, 이를 검증하기 위해 별도의 독립된 데이터셋을 사용하는 것
  • 이는 데이터 과적합을 방지하고 결과의 신뢰성을 높임

이번주 학습 내용 (WIL)

이번주는 새로운 팀원들과 만나고 통계학에 대해 기초적인 내용들을 배포된 강의와 라이브 세션을 통해 학습했다. 개인과제가 나오면서 내가 파이썬에 대해 부족했던부분이나 코드카타를 하면서 나 스스로 코딩을 하는것에 대한 어려움이 느껴졌지만 앞으로 더 노력하여 극복해 나가야될 문제라고 생각한다. 다음주부터는 다시 열심히 달려나가야겠다.

0개의 댓글