문제
테이블: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조항은 모든 제품을 구매한 고객만 포함되도록 보장
문제
양의 정수 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-해킹
문제점
3. 선택적 보고
4. 자료수집 중단 시점 결정
데이터 수집을 시작하기 전에 언제 수집을 중단할지 명확하게 결정하지 않으면, 원하는 결과가 나올 때까지 데이터를 계속 수집할 수 있음. 이는 결과의 신뢰성을 떨어뜨림.
5. 데이터 탐색과 검증 분리
이번주는 새로운 팀원들과 만나고 통계학에 대해 기초적인 내용들을 배포된 강의와 라이브 세션을 통해 학습했다. 개인과제가 나오면서 내가 파이썬에 대해 부족했던부분이나 코드카타를 하면서 나 스스로 코딩을 하는것에 대한 어려움이 느껴졌지만 앞으로 더 노력하여 극복해 나가야될 문제라고 생각한다. 다음주부터는 다시 열심히 달려나가야겠다.