mysql 데이터 중복 날짜 합치기 2

by 쉐리 [MySQL] [2022.06.10 12:36:01]


안녕하세요.

with T as (
    select year(date_sub(now(), interval 2 year)) startDate
    union
    select year(date_sub(now(), interval 1 year)) startDate
    union
    select year(date_sub(now(), interval 0 year)) startDate
    union
    select year(date_add(now(), interval 1 year)) startDate
    union
    select year(date_add(now(), interval 2 year)) startDate
)
select distinct d.startDate date, coalesce(p.point, 0) point
from T d
LEFT join Points p ON Year(p.date) = d.startDate AND p.userId = 2

이 SQL문을 실행하면

date point
2020 0
2021 100
2021 300
2022 1000

이런식으로 같은 년도에 해당하는 point를 더하고 합치고 싶습니다.

어디를 고쳐야 원하는 데이터를 얻을 수 있을까요?

알려주시면 감사하겠습니다.

by 마농 [2022.06.10 13:12:25]
-- Group By, Sum 하시면 됩니다. --
WITH t AS
(
SELECT YEAR(NOW()) - 2 yyyy
UNION ALL SELECT YEAR(NOW()) - 1
UNION ALL SELECT YEAR(NOW())    
UNION ALL SELECT YEAR(NOW()) + 1
UNION ALL SELECT YEAR(NOW()) + 2
)
SELECT d.yyyy
     , COALESCE(SUM(p.point), 0) point
  FROM t d
  LEFT OUTER JOIN Points p
    ON d.yyyy = YEAR(p.date)
 GROUP BY d.yyyy
;

 


by 쉐리 [2022.06.10 14:46:52]

와.. 감사합니다. 덕분에 해결했습니다!

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