240126금_TIL
sql 코드카타
문제 62.
다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.
SELECT history_id,
car_id,
date_format(start_date,'%Y-%m-%d') START_DATE,
date_format(end_date,'%Y-%m-%d') END_DATE,
case when datediff(end_date,start_date)>=29 then '장기 대여'
else '단기 대여'
end as RENT_TYPE
from car_rental_company_rental_history
where start_date like'2022-09%'
order by 1 desc
문제 63.
CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 기간을 기준으로 내림차순 정렬해주시고, 평균 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬해주세요.
SELECT car_id,
round(avg(datediff(end_date,start_date)+1),1) as AVERAGE_DURATION
from car_rental_company_rental_history
group by 1
having avg(datediff(end_date,start_date))>=6
order by 2 desc, 1 desc
round(n,2) 소수 2자리까지 표기
문제 63.
이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요.
SELECT *
from places
where host_id in (
select host_id
from places
group by 1
having count(*)>=2)
order by 1
문제 64.
데이터 분석 팀에서는 우유(Milk)와 요거트(Yogurt)를 동시에 구입한 장바구니가 있는지 알아보려 합니다. 우유와 요거트를 동시에 구입한 장바구니의 아이디를 조회하는 SQL 문을 작성해주세요. 이때 결과는 장바구니의 아이디 순으로 나와야 합니다
SELECT cart_id
from cart_products
where name in ('Milk','Yogurt')
group by cart_id
having count(distinct name)=2
order by 1
알고리즘 코드카타
문제 22.
두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.
예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.
def solution(a, b):
answer = 0
for i in range(a,b):
answer+=i
return answer
def solution(a, b):
answer = 0
if a<b:
for i in range(a,b+1):
answer+=i
else:
for i in range(b,a+1):
answer+=i
return answer
a,b의 크기 비교..!
문제 23. 콜라츠 추측
def solution(num):
answer = 0
while num != 1:
if num % 2 == 0:
num /= 2
else:
num = num * 3 + 1
answer += 1
if answer == 500:
return -1
return answer
문제 24. 서울에서 김서방 찾기
def solution(seoul):
kim_index = seoul.index("Kim")
return (f"김서방은 {kim_index}에 있다")
문제 25. 나누어 떨어지는 숫자 배열
def solution(arr, divisor):
answer=[]
for i in arr:
if i%divisor==0:
answer.append(i)
answer.sort()
if len(answer)==0:
answer.append(-1)
return answer
점프 투 파이썬
숫자형
-정수형 int
-실수형 float
문자열 인덱싱
a[-2] : 뒤에서 두 번째 문자
문자열 관련 함수
- .count() 문자 개수 세기
- .find() 문자가 처음 나온 위치 알려주기
- .index() 위와 동일
- .join() 문자열 삽입.
리스트 자료형
a=[1,2,3,['a'','b']
a[-1][0[
a
리스트 수정, 변경 삭제
a[1:3]=a[]
인덱스 1,2 삭제
del a[1] -- 인덱스 1인 요소 삭제
리스트 관련 함수
.append(4) --리스트 맨 마지막에 4 추가
.append([5,6]) -- 리스트 맨 마지막에 [5,6] 추가
.reverse() -- 리스트 뒤집기
.index(3) -- 인덱스3 인 요소 반환
.insert(0,4) --0위치에 4 삽입
.remove(x) --첫 번째로 나오는 x 삭제
.pop() -- 맨 마지막 요소를 돌려주고 그 요소는 삭제
.pop(x) -- 리스트의 x번째 요소 돌려주고 삭제
튜플 자료형
() 로 둘러싸는.
값 변환 불가.
괄호 생략 가능
딕셔너리 자료형
value에 리스트를 넣을 수 있음
a[2]='b' -- {2:'b'} 쌍 추가
del a[1] --key가 1인 쌍 삭제
딕셔너리 함수
a.keys() 딕셔너리 a의 key만 모아서 dict_keys라는 객체 리턴
a.items() -- key, value쌍 얻기
a.clear() -- key,value 쌍 모두 지우기
a.get('key') --key로 value 얻기
집합 자료형
중복 불가.
순서 없음
교집합 & intersection
합집합 | union
차집합 - difference
집합 자료형 관련 함수
.add() -- 값 1개 추가
.update([1,2,3]) -- 값 여러 개 추가
.remove() -- 특정 값 제거
자료형의 참과 거짓.
while a: --> a가 참인 동안
a.pop() --> 리스트의 마지막 요소를 하나씩 꺼내기
while 조건문:
수행할 문장