[25.03.07]본캠프14일차 코드카타+기초파이썬세션+QCC+파이썬종합

김명서·2025년 3월 7일
2

TIL_sparta

목록 보기
34/62
post-thumbnail

⌨코드카타

72.입양시각구하기(2)
0~23시 중에 각 시간마다 없는 데이터도 있기 때문에 행을 임의로 만들어줘야한다. (파이썬 반복문과 range가 너무 보고싶었다) 🙄
.
.
내가 풀었던 쿼리보다는, 배울점이 있는 쿼리 발견한걸 정리하는게 유익하겠다.

1.윈도우함수

윈도우함수

on s.hour=a.Hour(datetime)

💥알게된점

on s.hour=Hour(a.datetime)

on에서 함수(테이블 별명.공통컬럼) 으로도 연결이 가능한가보다 !
.
.
🔻전체쿼리

SELECT s.hour
, count(animal_id) as count
from (select row_number() over(order by animal_id) -1 as 'hour'
     from animal_outs
     limit 24
     ) s
left join animal_outs a
on s.hour=Hour(a.datetime) 
group by 1

.

2.재귀쿼리를 이용한 방법

WITH RECURSIVE hours AS (
    SELECT 0 as hour
    UNION ALL
    SELECT hour + 1 FROM hours WHERE hour < 23
)
SELECT h.hour as HOUR
FROM hours h

무아튜터님께서 올려주신 ver.
재귀쿼리

.
.

3.변수선언

또 다른 풀이

SET @HOUR = -1;
SELECT (@HOUR :=@HOUR + 1) AS HOUR,
        (SELECT COUNT(*)
        FROM ANIMAL_OUTS
        WHERE HOUR(DATETIME) = @HOUR) AS COUNT
FROM ANIMAL_OUTS
WHERE @HOUR < 23;

🔴기본구조

SET @변수명 = 대입값; 
SELECT @변수명 := 대입값;

SET 이외의 명령문에서는 " = " 이 비교연산자로 취급되지 때문에
SELECT로 변수를 선언하고 값을 대입할 때는 " := " 을 사용해야한다.
SET으로 HOUR 변수를 선언하고 -1 로 초기화 한다.
1 씩 더하면서 0~23시까지 모두 출력한다.
COUNT는 0~23시 중에서 HOUR(DATETIME)과 같은 것만 COUNT한다.

.
.

한문제에 딸린 풀이 3개를 공부하다가 한시간이 훌쩍 지났다...


기초 파이썬 라이브세션

문법은 쉽고 간결한 편에 속한다. 다만, 논리적! 컴퓨터적! 사고가 익숙하지 않은 것일뿐...!
무아튜터님 세션은 동기부여+호기심자극+흥미유발이 되었고, 정욱튜터님 세션은 재미있었다.
(들은 내용을 대충 적었다가, til 에 크게 필요하지 않은 내용인것같아 지웠다.)
.
.


Qcc

select count(*) as customer_count
from person
where (email_promotion=1 or email_promotion=2)
and person_type='IN'

이메일 프로모션 캠페인에 관심이 있습니다 ㅇㅋ

💥키워드 잡자 !
✅이메일 프로모션 수락, ✅개인(소매)고객

where (email_promotion=1 or email_promotion=2)
or 대신 in써도 되겠다.

허렇ㄹ 여기서 일단 distinct 없이도 똑같았는데
경각심을 갖고는 살아야겠다..!!!!!!

⭐👍그리고 !! 주석달기 !! 좋은습관이다. 같이 제출해도좋다

select a.customer_id
	, a.first_name
	, a.last_name
	, b.sum_qty as total_quantity
from(select c.customer_id
	, first_name
	, last_name
    from sales_customer c
    join person p
    on c.person_id=p.business_entity_id 
    ) a
join 
    (select h.customer_id
	, sum(d.order_qty) as sum_qty
    from sales_order_detail d
    join sales_order_header h
    on d.sales_order_id = h.sales_order_id
    where (date_format(h.order_date,'%Y-%m')='2011-10') 
    and (h.status != 6)
    group by 1
    ) b
on a.customer_id=b.customer_id
where b.sum_qty >= 70
order by 1

18줄 나와서 쓰면서도 의심함.. 효율적인 쿼리 ,,아원츄,,,
⭐⭐⭐
date_format(h.order_date,'%Y-%m')='2011-10'
이게 가끔 잘 필터링된건가? 궁금할 때가 있는데, order_date min,max로 확인해보자 !!

select soh.customer_id, p.first_name, p.last_namesod.order_qty
from sales_order_header soh
join sales_order_detail sod
on soh.sales_order_id=sod.sales_order_id
join sales_customer sc
on soh.customer_id = sc.customer_id
join person p
on sc.person_id= p. business_entity_id
where date_format(soh.order_date, '%Y-%m') ='2011-10'
and soh.status<>6
group by 1
having order_qty
order by 1

튜터님 방식대로도 풀어보고싶어서 서브쿼리를 안쓰려고 ... 아득바득 썼던건데...
뭐 대충 이런식이었는데, 시간이 너무 오래 걸릴 것 같아서 쿼리 마무리는 안했다. 🔴

.
.


파이썬종합

5-1,5-2 파일 불러오기 +저장하기

import pandas as pd

data = {
    'Name': ['John', 'Emily', 'Michael'],
    'Age': [30, 25, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)
excel_file_path = '/content/sample_data/data.csv'
df.to_csv(excel_file_path, index = False)

print("csv 파일이 생성되었습니다.")

이걸 복붙해서 코랩에서 실습했다.
필요할 때 강의자료에서 복붙해서 쓰는게 효율적일 것 같다.
.

포맷팅 , =f-string

f-string 방법

x = 10
print(f"변수 x의 값은 {x}입니다.")

🔻기존같았다면

x=10
print("변수 x의 값은',x,"입니다.")

, 로 일일이 잘라줘야했었다.
이건 구조가 기억나서 ! 반가웠다.

리스트 컴프리헨션

# 기본적인 구조
[표현식 for 항목 in iterable if 조건문]

여기까진 이해할 수 있었다 !!
.
🙌따라해본 예시

# 예시: 1부터 10까지의 숫자를 제곱한 리스트 생성
squares = [x**2 for x in range(1, 11)]
print(squares)  # 출력: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

아니 근데 예시를 보는데.. 마지막에 리스트 컴프리헨션을 중첩하여 2차원 리스트 생성 이 예시를 보여주시는데 뇌가 멈쳤다... 이건 주말에 다시 강의보면서 복습해야겠다..ㅠ
.
.



느낀점&회고

오전에도 2시간 세션이 있고, 오후에도 Qcc하느라 거의 4시에 끝났다..
6시 전까지는, 튜터님 쿼리랑 내쿼리 비교해보면서 공부중이었는데.. 집중력이 금새 바닥났다.. 그래서 잠깐 쉬다가 저녁먹고 파이썬 강의봤다.
QCC 때 너무 긴장했어서 에너지를 다 쓴 것 같다 ㅋㅋㅋㅋ 그치만 나중에 서류붙으면 코테보러 다녀야할텐데 !! 이것도 연습해나가야지 .. (애써 오늘은 처음이니 그럴 수 있다...~ 자기 위로..)
.
평온하게 강의보고있었는데, 다음주 개인과제가 무슨 말인가.. 난 아직 파이썬으로 할 수 있는게 암것도 없는 것 같다구요.......!!😥😥😥

그만울고,
이번주에 코드카타를 많이 못푼 것 같은데, 주말에 파이썬 위주로 틈날때마다 풀어봐야겠다.
일단 내일은 등산가야지지

profile
경영학도의 데이터분석 성장기💥

0개의 댓글

관련 채용 정보