시계열 데이터 쿼리 질문입니다. 0 1 595

by 인디비주얼 [SQL Query] query [2020.06.07 23:45:58]


이름 성과1 성과2 날짜
a 20 25 2020-06-01
b 15 13 2020-05-23
c 11 22 2020-03-18
a 5 1 2020-05-22

대충 이런 데이터가 있습니다.

최근 날짜 20개 중에서(주말 공휴일 비어있는날짜 제외) 성과1과 성과2의 합이 30 이상이였던 일수가 5일 이상이면서 20일 동안 성과1의 합이 성과 2의 합보다 큰사람의 이름을 출력 하고 싶은데 어떻게 해야되나요
제가 초보라 찾아 보려고 해도 검색 조차 할 수 없어서 이렇게 질문 남깁니다. 고수님들 답변 부탁드립니다.

by 마농 [2020.06.08 07:51:35]
SELECT 이름
  FROM (SELECT 이름, 성과1, 성과2, 날짜
             , ROW_NUMBER() OVER(PARTITION BY 이름 ORDER BY 날짜 DESC) rn
          FROM t
        ) a
 WHERE rn <= 20
 GROUP BY 이름
HAVING COUNT(CASE WHEN 성과1 + 성과2 >= 30 THEN 1 END) >= 5
   AND SUM(성과1) > SUM(성과2)
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입