TIL

240126금_TIL

30303 2024. 1. 26. 20:10
728x90

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 조건문:

    수행할 문장