TIL

2024-05-08

여연찌 2024. 5. 8. 20:14
  • 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