- Today
1. SQL 코드카타 1문제(88번)
2. 파이썬 300제(219~250)
3. 파이썬 총 정리 세션 수강
- Today I Learned
SQL
테이블 3개 join 후 출력하기
https://leetcode.com/problems/students-and-examinations/description/
SELECT a.student_id, a.student_name, b.subject_name, COUNT(c.subject_name)
FROM students AS a
LEFT JOIN examinations AS b ON a.student_id = b.student_id
LEFT JOIN subjects AS c ON b.subject_name = c.subject_name
GROUP BY 1,3
값이 출력되긴 했지만 원하는 값이 아니었음..
subject_name 이 0건인 데이터가 나오지 않았다.
SELECT a.student_id, a.student_name, b.subject_name, COUNT(c.subject_name) AS attended_exams
FROM students AS a
JOIN subjects AS b
LEFT JOIN examinations AS c
ON a.student_id = c.student_id
AND b.subject_name = c.subject_name
GROUP BY 1,3
ORDER BY 1,3
join 과 left join 을 쓴 후에 ON 조건을 한번에 주어도 되었나보다!
join 의 결과는 위의 이미지와 같다.
작동방식은?
students 테이블을 먼저 나열해주고,
subjects 테이블도 출력해준 뒤
examinations 테이블은 students 테이블의 student_id 와 같고, subjects 테이블의 subject_name 과 같을 때 적어준다.
ON 뒤에 모든 join 테이블에 대한 조건을 적어줘야 함
* 소현 튜터님 멘토링
> 해당 문제는 잘못된 문법으로 풀도록 되어있음..! join 에는 ON 절을 같이 작성해주어야 한다!
정상적인 작동문법으로는
SELECT *
FROM 테이블1
JOIN 테이블2
ON 조건
JOIN 테이블3
ON 조건
이렇게 작성해주어야 함!!
Python
list.insert(인덱스,데이터)
리스트 정렬
sort 메서드
data.sort()
*메서드: 객체에 의존한다
sorted 함수
sorted(data)
*함수: 입력한 값이 무엇인지
input() 함수로 입력한 값은 str 형태로 입력됨
for 반복문 사용시, 변수에 _ 가 있다면 변수를 사용하지 않고 자리차지만 해주는 것
ex) for _ in iterable:
이터레이터: 이터러블한 객체 반복
for i in [10,20,30]
제너레이터: 딥러닝과 같이 대용량 데이터를 사용할 때(메모리를 많이 차지할때), 반복할때마다 하나씩 입력
for i in [10]
enumerate()
# 리스트 안의 갯수를 구하고 싶을 때도 사용 가능!
list=[1,2,3,4]
for idx, x in enumerate(list):
print(idx+1)
> 4
# df 를 시리즈로 만들어 사용하는 경우 값이 없는 경우(결측치 등 셀이 비어있는 경우)에는 인덱스가 매겨지는지?
> NaN 이라는 값이 있기 때문에 인덱스는 매겨진다.
list=[0,NAN,1]
for idx,x in enumerate(list):
print(idx)
print(x)
> 0
> 0
> 1
> NAN
> 2
> 1
입력 문자열을 한 줄에 다섯글자씩 출력하는 함수 만들기
def print_5xn(line):
chunk_num = int(len(line) / 5)
for x in range(chunk_num + 1) :
print(line[x * 5: x * 5 + 5])
def print_5xn(line):
chunk_num = len(line) // 5
for x in range(chunk_num + 1) :
print(line[x * 5: x * 5 + 5])
print_5xn("아이엠어보이유알어걸예에")
> 아이엠어보
> 이유알어걸
> 예에
① chunk_num = int(len(line) / 5)
# line 의 문자열 갯수를 5로 나누어서 변수에 몫을 넣어준다.
# len(line) // 5 == 2
② for x in range(chunk_num + 1) :
# 몫 만큼 반복해준다.
# range(2)
③ print(line[x * 5: x * 5 + 5])
#
line[0*5 : 0*5+5]
line[1*5 : 1*5+5]
line[2*5 : 2*5+5]
>
line[0 : 5]
line[5 : 10]
line[10 : 15]
'구분자'.join ()
# 문자열 리스트를 합쳐주는 것
datetime 모듈
datetime.datetime.now()
# 현재시간 구하기
import datetime
a = datetime.datetime.now()
print(a)
- Next
1. SQL 코드카타 1문제(89번)
2. 파이썬 300제(251~270)
3. 데이터 전처리 & 시각화 강의 수강
'TIL' 카테고리의 다른 글
2024-05-10 (0) | 2024.05.10 |
---|---|
2024-05-09 (0) | 2024.05.09 |
2024-05-07 (0) | 2024.05.07 |
2024-05-03 (0) | 2024.05.03 |
2024-05-02 (0) | 2024.05.02 |