👩🏻💻 TODAY I LEARN
📌 SQL
- 코드카타 제한시간 두고 풀기
- window 비율 함수 정리
📌 Python
- 종합반 강의 4주차
- 코드카타
1. SQL
1-1. 코드카타 제한시간 두고 풀기
1) 코드카타 97번
select
round(sum(a.immediate) / count(1) * 100,2) as immediate_percentage
from
(select
customer_id,
case when min(order_date) = customer_pref_delivery_date then 1 else 0
end as immediate
from delivery
group by customer_id) a
"'최초 구매일 = 배송 희망일'이면 1, 아니면 0 값을 내는 칼럼을 만들고,
이거 이용해서 true인 그룹 백분율 구해줘"
2) 코드카타 100번
select
activity_date as day,
count(distinct user_id) as active_users
from activity
where activity_date between date_sub('2019-07-27', interval 29 day) and '2019-07-27'
group by activity_date
⭐️ 기간이 30일이면 interval 29 day !!
처음에 30 으로 했다가 다른 분들 쿼리 보고 발견했다 . ㅎ ㅜ ㅎ
1-2. window 함수 정리
[day] window 함수 - 비율 함수
1. RATIO_TO_REPORT2. RANK_PERCENTAGE3. CUME_DIST✔︎ 모든 비율함수 값은 0~1 사이의 값이다.✔︎ RATIO_TO_REPORT는 mysql에서 사용불가1. RATIO_TO_REPORT🔶 의미전체 sum 값에 대한 비율 🔶 특징Mysql 에서 사용 불가
rosenps3.tistory.com
SQLD 공부하면서 학습은 했지만 실습해본 적이 없어서 정리할 겸 직접 돌려봤다.
100% 이해했다고는 못 하지만 어느 정도 감은 잡혔음 !
2. Python
2-1. 종합반 4주차
1) 리스트 합계 구하는 방법
방법1. sum 함수 사용
data = [2, 4, 6, 8, 10]
result = sum(data)
print(result)
방법2. 반복문
def sum(numbers):
total = 0
for i in numbers:
total += i
return total
data = [2, 4, 6, 8, 10]
result = sum(data)
print(result)
방법3. 함수 정의 with 가변인수 args
def sum(*args):
total = 0
for i in args:
total += i
return total
result = sum(2,4,6,8,10)
print(result)
✅ data 라는 고정된 리스트를 정의하지 않고, 더 많은 인수들을 받기 위해 가변인수를 의미하는 args를 사용한다.
✅ 리스트가 이미 정의되었을 때는 사용 불가
2) 리스트 평균 구하기
def avg(numbers):
total = 0
for i in numbers:
total = (total + i) / len(total)
return total
data = [2, 4, 6, 8, 10]
print(avg(data))
❓ sum 함수를 구하고 마지막에 따로 len(data) 처리하지 않고
그냥 한 번에 평균을 구하는 함수를 만들 순 없을까?
싶어서 만들어 봤는데 결과는 ❌

⭐️ total 변수가 처음에 0 으로 정의되어있는 단순 숫자값이기 때문에 len함수를 사용할 수 없다!
⭐️ 그리고 애초에 틀린 게, 저 쿼리로는 전체 합계를 제대로 구할 수 없다.
궁금증 해결했으니 제대로 된 방법 정리해보자.
위에 합계 구한 3가지 방법대로 풀어봤다.
방법1. sum 함수 사용
data = [2, 4, 6, 8, 10]
average = sum(data)/len(data)
print(average)
방법2. 반복문
def avg(numbers):
total = 0
for i in numbers:
total += i
return total / len(numbers)
data = [2, 4, 6, 8, 10]
result = avg(data)
print(result)
방법3. 함수 정의 with 가변인수 args
def avg(*args):
total = 0
for i in args:
total += i
return total / len([2,4,6,8,10])
result = avg(2,4,6,8,10)
print(result)
⭐️ 가변인수 사용할 때 len함수를 독립적으로 걸어줄 수 있다.
반환값에 len을 넣으면 되겠다는 걸 알게 되었고, 가변인수의 평균 구하기에서 응용을 해보았다.
가변 인수는 말그대로 정해지지 않은 인수이기 때문에 독립적이다.
때문에 len의 리스트도 자유롭게 사용할 수 있다.
‼️ len([2,4,6,8,10]) 대신에 len(*args) 사용할 수 없음.
'데이터 분석' 카테고리의 다른 글
| [day26] 조금 늦더라도... 제대로 공부하겠습니다. (0) | 2025.03.13 |
|---|---|
| [day25] SQL : Python = 1 : 9 (0) | 2025.03.12 |
| [day23] SQL-스칼라 서브쿼리에서 조건주기, 파이썬- 조건문/반복문 (0) | 2025.03.10 |
| [day21] 3주차 WIL (1) | 2025.03.08 |
| [day20] 다양한 쿼리를 많이 접해보자. (0) | 2025.03.07 |