데이터 부트캠프 - Today I Learned

[스파르타 내일배움캠프 / 데이터 분석 트랙] TIL(Today I Learned)_3주차_24.12.10

onion95 2024. 12. 10. 21:09

Today's Goals

1. SQL 쿼리 작성 익숙해지기 - 코드카타 레벨5

2. 파이썬 기억 돌려내 - 파이썬 강의

 

 

담임매니저님과 상담 완료.

난 어느 업계의 어느 직무로 가야 하는가... (아련)

 

팀원 분들과 이런 얘기를 나누다 보니 식품 업계도 흥미로운 곳이구나 하는 생각

컨설팅 펌에서 금융으로의 이동이 커리어 면에서 더 좋을? 쉬울? 것이라는 정보도 얻었다!

 

 

1. 코드카타 SQL

 

[UNION을 하고 싶은데, 컬럼 개수 안맞으면?]

  • UNION을 하려는 두 테이블 A와 B에서, A에는 회원 id 정보가 있고 B에는 회원id가 없어도 가능!
  • NULL AS 컬럼명 : B에 회원id 컬럼을 생성하고 null로 채운 후 UNION 하기
# 기본 사용법
SELECT a, b, c
FROM A
UNION ALL
SELECT NULL AS a, b, c
FROM B;

#user_id가 없는 오프라인 구매 데이터에 user_id 채우기
(SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, USER_ID, SALES_AMOUNT
FROM ONLINE_SALE
WHERE SALES_DATE LIKE '2022-03%')
UNION ALL
(SELECT DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE, PRODUCT_ID, 
NULL AS USER_ID, SALES_AMOUNT
FROM OFFLINE_SALE
WHERE SALES_DATE LIKE '2022-03%')
ORDER BY SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC;

 

 

 

2. 파이썬 강의

 

[for문과 while문의 차이]

  • while문은 조건이 참인 값만 나옴(거짓이 나올때까지 반복되는 것)

 

 

[range()함수의 특징과 직관적 사용법]

  • range(start,end,step) : end값으로 지정한 값의 바로 전까지를 범위로 함
  • 코딩에서 직관적으로 알아보기 위해 멈추려는 값 + 1로 작성 가능
#처음부터 5위치 전까지(4까지)
for i in range(5):
    print(i, end=' ')

#처음부터 4위치 까지
for i in range(4+1):
    print(i, end=' ')

※ print 안 end=' '의 의미는 i를 반복해서 나열하여 출력할 때, 한 글자(반복 1회 끝) 출력 후 띄우고(공백) 다음 글자 쓰는 의미

 

 

[반복은 딕셔너리도 할 수 있다]

person = {"name": "John", "age": 30, "city": "New York"}
for key, value in person.items():
    print(key, " : ", value)

 

 

[if문(조건문)과 for문(반복문)은 함께 사용할 수 있다]

for i in range(1, 101):
    if i % 3 == 0:
        print(i)

 

 

[무한 반복이 일어나는 while문을 조심하자]

  • while문은 멈추는 조건이 존재하지 않으면 무한 반복이 일어날 수 있음(컴퓨터 살려)
  • while문의 반복을 제어하는 방법은 break, pass, continue
# break 사용
for i in range(10):
    if i % 2 == 0:
        break
        print(i)    
    else:
        print(i)
print("Done")

# 결과값
# Done
  • break는 조건을 만족하면 반복문을 끝내고 결과 값을 출력
# pass 사용 1
for i in range(10):
    if i % 2 == 0:
        pass
        print(i)    
    else:
        print(i)
print("Done")

# 결과값
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# Done


# pass 사용 2
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num % 2 == 0:
        pass
    else:
        print(num, "은 홀수입니다.")

# 결과 값
# 1 은 홀수입니다.
# 3 은 홀수입니다.
# 5 은 홀수입니다.
  • pass는 반복문 수행에 영향을 주지 않고 다음 단계로 계속 진행됨 (예시 1에서는 짝수여도 print 홀수여도 그대로 숫자 print 단계로 넘어가고, 예시 2에서는 짝수이면 아무것도 하지 않고 넘어가고 홀수여도 아무 영향 없이 다음 else 단계 적용)
# continue 사용
for i in range(10):
    if i % 2 == 0:
        continue
        print(i)    
    print(i)
print("Done")

# 결과값
# 1
# 3
# 5
# 7
# 9
# Done
  • 조건에 맞으면 continue가 실행되어 해당 실행을 건너뛰고(해당 순번의 계산은 하지않음) 다음 순번의 반복문을 실행하여 결과값을 반환(0~9 사이 짝수는 모두 건너뛰었기 때문에 결과에 나오지 않음)