테스트 사이트 - 개발 중인 베타 버전입니다

월 계산을 할려고 하는되요 문의 드립니다. 채택완료

sukja 2년 전 조회 1,478

 

목적은 

 

매월 전월 26에서 ~ 현재월 25일 정산처리 할려고 하는되요

 

매월 합산하는 쿼리는 

--

SELECT CONCAT(YEAR(ct_select_time),'-',MONTH(ct_select_time)) AS ym, SUM(pt_sale)
FROM g5_shop_cart
WHERE YEAR(ct_select_time) = 2023 AND ct_status = '완료' AND ct_select = '1' AND pt_id='ID'
GROUP BY ym 

--

결과

 

위처럼 하면 매월 1일 부터 마지막인거 같습니다.

 

특정날자로 매월 합산 값 가져오는 방법이 있을까요?

 

고수님들 조언 구합니다.

 

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
2년 전

이렇게 해보는건 어떠실까요?


$currentDate = date("Y-m-d");
$startDate = date("Y-m", strtotime($currentDate . " -1 month")) . "-26";
$endDate = date("Y-m") . "-25";


SELECT CONCAT(YEAR(ct_select_time),'-',MONTH(ct_select_time)) AS ym, SUM(pt_sale)
FROM g5_shop_cart
WHERE ct_select_time >= '시작일' AND ct_select_time <= '종료일'
  AND ct_status = '완료' AND ct_select = '1' AND pt_id='ID'
GROUP BY ym

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sukja
2년 전
답변감사합니다. ^^~

댓글을 작성하려면 로그인이 필요합니다.

2년 전

</p>

<p>SELECT 

    CONCAT(YEAR(ct_select_time), '-', LPAD(MONTH(ct_select_time) + (CASE WHEN DAY(ct_select_time) < 26 THEN 0 ELSE 1 END), 2, 0)) g

    -- CONCAT(YEAR(ct_select_time),'-',MONTH(ct_select_time)) AS ym

    , SUM(pt_sale)

FROM g5_shop_cart

WHERE YEAR(ct_select_time) = 2023 AND ct_status = '완료' AND ct_select = '1' AND pt_id='ID'

-- GROUP BY ym ;

GROUP BY g

HAVING SUBSTR(g, -2, 2) != '13';</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sukja
2년 전
답변감사합니다. ^^

댓글을 작성하려면 로그인이 필요합니다.

2년 전

1. g5_shop_cart DB 테이블에 새 칼럼을 추가합니다. ex) ct_ym (정산월)

 

2. 해당 DB 테이블에 값이 저장되는 부분(파일)에서, ct_ym 을 미리 계산하여 넣어줍니다.

ex.

2023년 5월 25일에 저장되는 경우 => ct_ym : '2023-5'

2023년 5월 27일에 저장되는 경우 => ct_ym : '2023-6'

 

if (date('j') < 26)

  $ct_ym = date('Y-n');

else

  $ct_ym = date('Y-n', strtotime('+1 month'));

 

3. 합산쿼리

select ct_ym, sum(pt_sale)

  from g5_shop_cart

 where ct_select_time >= '2023'

    and ct_status = '완료'

    and ct_select = '1'

    and pt_id='ID'

 group by ct_ym

 order by 1

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sukja
2년 전
답변감사합니다.^^

댓글을 작성하려면 로그인이 필요합니다.

특정날자로 매월 합산 값 가져오는 방법이 있을까요?

== 여기서 특정" 날짜라는 것이

매월 전월 26에서 ~ 현재월 25일 정산처리 할려고 하는되요

== 이걸 말씀하시는 건가요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

엑스엠엘
2년 전
WHERE ct_select_time >= '2022.12.26' and ...
GROUP BY month( ct_select_time)+IF(DAY(ct_select_time)<26,0,1))
s
sukja
2년 전
네 맞습니다.
예를 들어서요

2022.12.26 ~ 2023.1.25
2023.1.26 ~ 2023.2.25
2023.2.26 ~ 2023.3.25
2023.3.26 ~ 2023.5.25
2023.5.26 ~ 2023.6.25

이렇게요
엑스엠엘
2년 전
혹시 위 조건으로 해 보셨나요

댓글을 작성하려면 로그인이 필요합니다.

toqurk
2년 전

$currentDate = date("Y-m-d");
$startDate = date("Y-m", strtotime($currentDate . " -1 month")) . "-26";
$endDate = date("Y-m") . "-25";

 

SELECT CONCAT(YEAR(ct_select_time),'-',MONTH(ct_select_time)) AS ym, SUM(pt_sale)
FROM g5_shop_cart
WHERE (1) AND `ct_select_time` >= '{$startDate}' AND `ct_select_time` <= '{$endDate}'
  AND `ct_status` = '완료' AND `ct_select` = '1' AND `pt_id`='ID'
GROUP BY ym
 

소스코드는 https://sir.kr/bbs/profile.php?mb_id=ws2027" onclick="return false;" rel="nofollow" target="_blank" title="제이앤 자기소개">제이앤 님껄 참조했습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sukja
2년 전
답변감사합니다. ^^

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인