학습할 때 마다 새롭게 느껴지는 개념들
보고 또 봐도 마치 처음 보는 사람마냥 낯선 파이썬 친구 하하하하하 ^^
그래서 이 파이썬 친구와 어떻게 하면 친해질까 고민이 참 많은데...뭐가 정도인지 모르겠어서 그냥 하고 있다.
한편 요근래 공부란 무엇인지, 공부를 하는 태도, 효과적인 공부방법을 검색해 보았는데
그 중에서 유의미했던 팁들을 떠올려보자면 다음과 같다.
- 자신의 언어로 치환해보는 복습
- 학습 내용을 현실에 적용했을 때의 보람 > 학습 욕구 상승 > 정진
최근 많은 시간을 할애했음에도 큰 변화가 없는 것 같아 낙담하기도 했다.
그럼에도 난 이 분야를 더 알고 싶고, 잘하고 싶은 마음이 가득하기에 욕심을 내려놓고 차근차근 밟아가기로 마음을 고쳐먹었다.
자고로 새로운 언어에숙해지는데는 시간이 소요되며, 난 이 분야의 비기너니까 지금 이 혼돈 또한 지극히 정상이라 생각된다.
중요한건 꾸준함이니 계속해서 한 걸음 나아가보자고~! 오예~
요약/나만의 인사이트
- SQL 서로 다른 품목 동시구매의 경우! > DISTINCT를 활용하자!
- WHERE 절을 이용해 해당 품목(a,b)들로 필터링 하고
- GROUP BY 절을 이용해 아이디 별로 묶었을 때
- 조합이 (a,a) (a,b) (a,a,b) (b,b) (b,a,b)등 다양할 수 있음
- 그 때 COUNT(DISTINCT NAME)을 쓰면 중복 된거 제거하고 고유값 세는 거니까
- COUNT(DISTINCT NAME) =2 를 통해 서로다른 품목 동시구매조건을 알 수 있음
새롭게 알게 된 것
- v-code 터미널에서 python day1.py 입력 → day.py 전체가 실행 됨.
- input을 사용하면 문자형으로 출력된다.
- set은 순서가 없고 중복을 허용하지 않는다.
- del은 완전 삭제를 의미한다.
- 탈출문자 : 역슬래시(\)와 특정문자(숫자)의 조합으로 표현할 수 없는 기능이나 문자를 표시 \’
- 줄 나누기 : print('사실\\n감자도\\n맛있어요.')
- 불리언은 True, False인 자료형이다.
- 파이썬 자료형 비교하기
리스트 튜플 딕셔너리 집합
| 시퀀스 | o | o | x | x |
| 인덱싱/슬라이싱 | o | o | o( 단, key 기준) | x |
| 추가/수정/삭제 | o | x | o | o |
| 중복허용 | o | o | o(단, key는 중복 안됨) | x |
| key-value | x | x | o | x |
특히 어려웠던 것
- SQL 동시구매 문제
- 내가 접근한 방법
- 문제
- 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다.
- 나의 접근법
- CASE WHEN 함수를 사용하여 우유, 요거트를 1로 치환한다.
- 그것을 milk_yogurt 컬럼으로 만든다.
- GROUP BY CART_ID 묶어서 동시에 구매한 경우(SUM ≥2) 만 필터링한다. 이때 HAVING을 사용한다.
- 왜 틀렸는지
- 엇 그런데 ‘우유-우유’ , ‘요거트-요거트’도 합계가 2개 이상일텐데.. 어떡하지?
- 튜터님의 도움받아 다르게 풀기
- KEY POINT
- 우유컬럼, 요커트 컬럼 각각 따로 만들기
- WIHT 절로 묶기 (CTE 만들기), 임시테이블로 쓰기
- 새로운 쿼리문에서 cart별 우유컬럼, 요거트컬럼 sum으로 집계하기
- 그리고 두가지 컬럼 모두 0 이상이면 동시에 구매한 조건 만족!
- 잠깐 WIHT 절이란? (= Common Expression Table)
- 실제로 테이블을 형성하지 않은 임시적인 쿼리 결과셋이다.
- 임시 테이블처럼 참조할 수 있다.
- 복잡한 쿼리문을 분리해서 가독성을 높일 수 있다.
- 잠깐 WIHT 절이란? (= Common Expression Table)
- KEY POINT
- 코드
WITH A AS (SELECT CART_ID, NAME, IF(NAME='Milk', 1, 0) AS milk, IF(NAME='Yogurt', 1, 0) as yogurt FROM CART_PRODUCTS) SELECT CART_ID FROM A GROUP BY CART_ID HAVING SUM(milk) > 0 AND SUM(yogurt) > 0 ORDER BY 1 - 문제
- 다른 사람이 접근한 방법
- 내가 접근한 방법
SELECT CART_ID
FROM CART_PRODUCTS
WHERE NAME REGEXP 'Milk|Yogurt'
GROUP BY CART_ID HAVING COUNT(DISTINCT NAME) >= 2 -- REGEXP 'Milk|Yogrut' : 우유 또는 요거트가 포함된 행만 필터링 -- COUNT(DISTINCT NAME) >= 2 : 구별된 네임이 2개이상(group by로 합쳤으니까 가능)
다음에 적용해 볼 것
- 6/5까지 개념부분 복습하고 계속해서 문제풀자!
'기타 > Python' 카테고리의 다른 글
| 250610_파이썬 함수를 계속 파볼까요? (2) | 2025.06.10 |
|---|---|
| 250609_파이썬(정수→문자열→리스트) (0) | 2025.06.09 |
| 250604_파이썬(if, for, while, def) (0) | 2025.06.04 |
| 250529_파이썬(라이브러리), SQL(WHERE, IN, SUBQUERY 등등 내가 어려워한 문제들) (0) | 2025.05.29 |
| 250527_파이썬(if, for, while) , SQL(rank) (0) | 2025.05.27 |