KATA는 기술과 기술 향상에 초점을 맞춘 코드 챌린지입니다.
일부는 프로그래밍 기본 사항을 교육하는 반면 다른 일부는 복잡한 문제 해결에 중점을 둡니다.
이 용어는 The Pragmatic Programmer 라는 책의 공동 저자인 Dave Thomas 가
무술에서 일본의 카타 개념을 인정하면서 처음 만들어졌습니다.
Dave의 개념 버전은 코드 카타를 프로그래머가
연습과 반복을 통해 기술을 연마하는 데 도움이 되는 프로그래밍 연습으로 정의합니다.
토요일에 풀다가 결국 풀지 못한 문제...
튜터님께 질문 후 통과했다!
✔️ 제출 쿼리
✔️ 쿼리 분석
WITH movingsum AS (
SELECT DISTINCT visited_on,
CASE WHEN
7 = COUNT(*) OVER(ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
THEN SUM(amount) OVER
(ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
ELSE NULL END amount
FROM Customer
GROUP BY visited_on
)
SELECT visited_on,
amount,
ROUND(amount / 7, 2) average_amount
FROM movingsum
WHERE amount IS NOT NULL
✔️ 제출 쿼리
✔️ 쿼리 분석
WITH CTE AS(
SELECT DISTINCT visited_on
, SUM(amount) OVER(PARTITION BY visited_on ORDER BY visited_on) AS am
FROM customer
)
SELECT visited_on
,amount
,ROUND(average_amount,2) AS average_amount
FROM (
SELECT visited_on
,SUM(am) OVER(ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW ) AS amount
,AVG(SUM(am)) OVER(ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW ) AS average_amount
,COUNT(*) OVER(ORDER BY visited_on ROWS BETWEEN 6 PRECEDING AND CURRENT ROW ) AS cnt
FROM CTE
GROUP BY visited_on
)l
WHERE cnt = 7
ORDER BY visited_on
문제 이해하다가.. 진짜 30분은 날린 듯ㅋㅋ...
보험 테이블에서 tiv_2015 값이 1개 이상 중복되면서,
위치(lat-위도,lon-경도)가 겹치지 않는 tiv_2016 값들을 더해
소수점 2째자리까지 반올림
✔️ 제출 쿼리
✔️ 쿼리 분석
SELECT ROUND(SUM(tiv_2016), 2) tiv_2016
FROM Insurance
WHERE tiv_2015 IN (
SELECT tiv_2015
FROM Insurance
GROUP BY tiv_2015
HAVING COUNT(*) > 1
)
AND (lat, lon) IN (
SELECT lat, lon
FROM Insurance
GROUP BY lat, lon
HAVING COUNT(*) = 1
)
리트코드 첫 Hard
문제!
✔️ 제출 쿼리
✔️ 쿼리 분석
# 중복 순위까지 허용해서 부서별 월급 3위까지 조회하는 문제,
# 중복 순위 허용 = DENSE_RANK()
# 순위를 조회하는 ranking 테이블 생성 후, 3위까지만 조회!
WITH ranking AS (
SELECT *,
DENSE_RANK() OVER(PARTITION BY departmentId ORDER BY salary DESC) depart
FROM Employee
)
SELECT d.name Department,
r.name Employee,
r.salary Salary
FROM ranking r LEFT JOIN Department d
ON r.departmentId = d.id
WHERE r.depart <= 3