SQL 코드카타
있었는데요 없었습니다
관리자의 실수로 일부 동물의 입양일이 잘못 입력
보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성
보호 시작일이 빠른 순으로 조회
- 입양일, 보호시작일 : 조인
- 보호 시작일이 빠름 : <
- 정렬 : order by
SELECT I.ANIMAL_ID, I.NAME FROM ANIMAL_INS AS I
INNER JOIN ANIMAL_OUTS AS O ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE O.DATETIME < I.DATETIME
ORDER BY I.DATETIME ASC;
Product Price at a Given Date
2019년 8월 16일의 모든 제품 가격을 찾기 위한 해결책으로, 모든 제품의 가격이 변경되기 전 초기 가격을 10으로 가정
- 초기 가격, 지금 가격 : 서브쿼리
- 20190816 이후에 변경 : 초기가격 = min
- 연산자 결합 : union all
SELECT product_id, 10 AS price
FROM Products
GROUP BY product_id
HAVING MIN(change_date) > '2019-08-16'
UNION ALL
SELECT P.product_id, P.new_price as price
FROM Products P INNER JOIN
(
SELECT product_id, MAX(change_date) as max_date
FROM Products
WHERE change_date <= '2019-08-16'
GROUP BY product_id
) as R
ON P.product_id = R.product_id AND P.change_date = R.max_date;
UNION 이란
여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법
중복된 값을 제거하고 보여줌
중복된 값을 제거하는 연산이 추가로 수행되기 때문에 UNION ALL보다 속도가 느림
UNION ALL 이란
UNION과 동일하게 여러 쿼리문들을 합쳐서 하나의 쿼리문으로 만들어주는 방법
중복된 값을 모두 보여줌
JOIN과 차이점
JOIN : 새로운 열로 결합한다. (수평결합)
UNION : 새로운 행으로 결합한다. (수직결합)
Weather Observation Station 14
STATION 테이블에서 1372345보다 작은 LAT_N (북위)의 가장 큰 값울 소수점 4자리까
SELECT ROUND(MAX(LAT_N), 4)
FROM STATION
WHERE LAT_N < 137.2345
파이썬 코드카타
대충 만든 자판
1번 키부터 차례대로 할당된 문자들이 순서대로 담긴 문자열배열 keymap
입력하려는 문자열들이 담긴 문자열 배열 targets
각 문자열을 작성하기 위해 키를 최소 몇 번씩 눌러야 하는지 순서대로 배열에 담아 return 하는solution 함수
단, 목표 문자열을 작성할 수 없을 때는 -1을 저장합니다.
- for문 사용
- for~else문 사용
- if~else문 사용
def solution(keymap, targets):
answer = []
for target in targets:
minkey = 0 # target 총 횟수
for i in target: # target 문자열 하나
c = 101 # 100번까지 가능
a = False # 존재여부
for k in keymap:
key = k.find(i)
if key == -1: # 존재하지 않으면 계속
continue
c = min(key+1, c)
a = True
if a: # 누적
minkey += c
else: # answer에 -1 추가
answer.append(-1)
break
else: # for-else
answer.append(minkey)
return answer