반응형

PHP에서 현재일 기준 -1일을 가져오는 방법입니다.
즉, 어제의 일자를 가져옵니다.

// 현재일 기준 -1일 날짜를 가져온다.
$어제날짜 = date("Y-m-d", strtotime("-1 day", time()));;

 

MySQL에서 부서별, 각 상품별(A/BC) 매출을 집계하는 SQL입니다.

- SUM(price) : 전체 매출을 집계합니다.
- SUM(CASE WHEN comp = 'A' THEN price ELSE 0 END) : A 상품의 매출만 집계합니다.
- GROUP BY dept WITH ROLLUP : 전체 합계를 Row로 보여줍니다.
- COALESCE(dept, '합계') : 마지막 Row의 칼럼 내용을 합계로 보여줍니다.

// ROLLUP 집계 함수
SELECT COALESCE(dept, '합계') AS dept,
       SUM(price) total,
       SUM(CASE WHEN comp = 'A' THEN price ELSE 0 END) A,
       SUM(CASE WHEN comp = 'B' THEN price ELSE 0 END) B,
       SUM(CASE WHEN comp = 'C' THEN price ELSE 0 END) C
  FROM TABLE
 WHERE date BETWEEN STR_TO_DATE('[시작날짜]','%Y-%m-%d %H:%i:%s')
   AND STR_TO_DATE('[종료일]','%Y-%m-%d %H:%i:%s')
GROUP BY dept WITH ROLLUP

 

MySQL에서 현재일을 기준으로 날짜를 가져오는 방법입니다.

/* 현재일 가져오기 */
SELECT DATE_FORMAT( NOW(), '%Y-%m-%d %H:%i:%s' )

/* 현재일 기준 -1일 가져오기 */
SELECT DATE_FORMAT( DATE_ADD(NOW(), INTERVAL - 1 DAY), '%Y-%m-%d 23:29:55' )

/* 현재일 기준 -3일 가져오기 */
SELECT DATE_FORMAT( DATE_ADD(NOW(), INTERVAL - 3 DAY), '%Y-%m-%d 00:00:00' )

MySQL에서 실적을 집계하는 방법입니다.

기간 전체 누적을 같이 보여주기 위해서 UNION ALL을 사용하였습니다.
첫번째 SQL은 전체 누적 데이터이고
두번째 SQL은 현재일 기준으로 전일 데이터를 가져오 일자별로 데이터를 출력하게 합니다.

/* 실적 집계하기 (누적/전일/오늘) */
SELECT '현재까지 누적' reg_date,
       SUM(price) total
 FROM TABLE
WHERE p_date BETWEEN DATE_FORMAT(CONCAT(DATE_FORMAT( NOW(),'%Y-%m'),'-1'),'%Y-%m-%d')
  AND DATE_FORMAT( NOW(), '%Y-%m-%d 23:29:55' )
UNION ALL
SELECT DATE_FORMAT(reg_date, '%Y-%m-%d') reg_date,
       SUM(price) total
 FROM TABLE
WHERE p_date BETWEEN DATE_FORMAT( DATE_ADD(NOW(), INTERVAL - 1 DAY), '%Y-%m-%d 00:00:00' )
  AND DATE_FORMAT( NOW(), '%Y-%m-%d 23:29:55' )
GROUP BY DATE_FORMAT(reg_date, '%Y-%m-%d')

MySQL ROLLUP 집계 함수 사용방법

 

반응형

+ Recent posts