전달 데이터 비교해서 100만원 이상 차이나는거만 뽑고 싶습니다. 채택완료
wr_1 : 고객명
wr_2 : 금액
wr_3 : 년도
wr_4 : 사용달
여분필드는 이런식으로 정의 하였고요,
고객이 하나만 구매 이력이 있는게 아니라서 구매 합산 금액을 sum(wr_2) 로 생각하고 있습니다.
2월 구매 고객이 1월 비교해서 100만원 이상 구매고객을 뽑는 쿼리를 만들고 싶습니다.
쿼리 도움좀 받을 수 있을지 해서 질문 남깁니다.
아래는 비교 전 쿼리를 제가 만들어보았습니다.
SELECT a.wr_1, sum(a.wr_2) as tcs FROM g5_write_client a where wr_3= '2022' and wr_4 = '02' and wr_1 != '' group by wr_1
SELECT b.wr_1, sum(b.wr_2) as tcs FROM g5_write_client b where wr_3= '2022' and wr_4 = '02' and wr_1 != '' group by wr_1
답변 3개
- DDL
</p>
<p>CREATE TABLE g5_write_client (
wr_1 varchar(50) DEFAULT NULL,
wr_2 varchar(50) DEFAULT NULL,
wr_3 varchar(4) DEFAULT NULL,
wr_4 varchar(2) DEFAULT NULL
);</p>
<p>
- DML
</p>
<p>INSERT INTO g5_write_client VALUES
('A', 100000, 2022, 10)
,('A', 100000, 2022, 11)
,('A', 100000, 2022, 12)
,('A', 100000, 2023, 1)
,('A', 200000, 2023, 1)
,('A', 300000, 2023, 1)
,('A', 400000, 2023, 1)
,('A', 500000, 2023, 1)
,('A', 100000, 2023, 2)
,('A', 100000, 2023, 3)</p>
<p> ,('B', 0, 2022, 12)
,('B', 1000000, 2023, 1)</p>
<p> ,('C', 200000, 2022, 10)
,('C', 200000, 2022, 11)
,('C', 200000, 2022, 12)
,('C', 200000, 2023, 1)
,('C', 700000, 2023, 3)
,('C', 300000, 2023, 3)
;</p>
<p>
- SELECT
</p>
<p>SELECT
a.wr_1
,SUM(CASE WHEN b.wr_2 IS NULL THEN 0 ELSE b.wr_2 END) month_before
,SUM(CASE WHEN a.wr_2 IS NULL THEN 0 ELSE a.wr_2 END) month_now
,GROUP_CONCAT(DISTINCT 'before month ~ ', a.wr_3, '-' , a.wr_4) period
FROM
g5_write_client a
LEFT OUTER JOIN g5_write_client b ON
b.wr_1 = a.wr_1
AND b.wr_3 = DATE_FORMAT(DATE_SUB(CONCAT(a.wr_3, '-', a.wr_4, '-01'), INTERVAL 1 MONTH), '%Y')
AND b.wr_4 = DATE_FORMAT(DATE_SUB(CONCAT(a.wr_3, '-', a.wr_4, '-01'), INTERVAL 1 MONTH), '%c')
WHERE </p>
<p> -- 2022-12 ~ 2023-01
-- a.wr_3 = 2023
-- AND a.wr_4 = 1</p>
<p> </p>
<p> -- 2023-02 ~ 2023-03</p>
<p> a.wr_3 = 2023
AND a.wr_4 = 3
GROUP BY
a.wr_3, a.wr_4, a.wr_1
HAVING
month_now - month_before >= 1000000
;</p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
select name, curTotal, prevTotal from ( select wr_1 as name, sum(IF(wr_4 = '01', wr_2, 0)) as prevTotal, sum(IF(wr_4 = '02', wr_2, 0)) as curTotal from g5_write_client where wr_3 = '2022' group by wr_1 ) as result where curTotal - prevTotal >= 1000000
더미 테이블 만들어서 테스트 해봤을때 되긴하는데..
저런식으로 지난달 결제금액, 지난달 결제금액 구해서 묶어가지고 조건문 걸어주면 되지않을까 싶네요..
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
다른분들도 비교합산 쿼리 하실 때 도움이 될 소스라 생각합니다.