SQL 에서 데 이 터 를 월 별로 통계 하거나 요일 별로 통계 하 는 인 스 턴 스 코드

모든 수요 에 대해 어떻게 처리 해 야 할 지 모 를 때 가장 간단 한 방법 을 사용 하거나 명확 하 게 말 하고 가장 원시 적 인 방법 으로 먼저 업무 수 요 를 실현 한 다음 에 다시 이야기 하 세 요.  
1.디 스 플레이 대기 열 데이터 시트"imscheckout_task'는 집계 통 계 를 실시 하고 매달 의 인출 총액 을 집계 하 며 인출 총 횟수 를 집계 한다.
1.SQL 작업 은 다음 과 같 습 니 다.

SELECT id
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 11 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '0'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 10 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '1'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 9 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '2'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 8 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '3'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 7 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '4'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 6 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '5'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 5 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '6'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 4 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '7'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 3 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '8'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 2 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '9'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '10'
,SUM(case when FROM_UNIXTIME(addTime,'%Y-%m') = date_format(DATE_SUB(curdate(), INTERVAL 0 MONTH),'%Y-%m') AND `status` = 1 then money else 0 end) as '11'
FROM ims_checkout_task
 2.데이터 베 이 스 는 다음 과 같이 되 돌려 줍 니 다.

 3.키워드:case when

//      case  ,  ,  sex    1,    ;  sex  2,    ;      
CASE sex
WHEN '1' THEN ' '
WHEN '2' THEN ' '
ELSE '  ' END
//     SQL ,      ,       money  ,    0.
시간 처리

//         2018-10
FROM_UNIXTIME(addTime,'%Y-%m')
//SQL         2019-08 ,  expr   ,        1,    2 ・・・
DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 0 MONTH),'%Y-%m')
//               /    。
DATE_FORMAT(date,format)
//              。
DATE_SUB(date,INTERVAL expr type)
//         。
CURDATE()
예컨대

SELECT NOW(),CURDATE(),CURTIME()

 예컨대

SELECT DAYOFWEEK(NOW()),WEEKDAY(now()),DATE_FORMAT(NOW(),"%w"),NOW()

2.포인트 주문 데이터 표 에 대해 주 별로 주문 수량 을 집계 한다.예 를 들 어 오늘 은 화요일 이 고 월요일 부터 화요일 까지 의 매일 단일 수량 으로 데 이 터 를 모 아 순서대로 유추 한다.
1.SQL 작업 은 다음 과 같 습 니 다.

SELECT id
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 1 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as '0'
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 2 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as '1'
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 3 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as '2'
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 4 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as '3'
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 5 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as '4'
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 6 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as '5'
,SUM(case when DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w') = 0 AND WEEK(date_add(curdate(),interval 6 day),2) = WEEK(date_add(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),interval 6 day),2) AND `pay_status` = 1 then 1 else 0 end) as '6'
FROM ims_integral_order
2.데이터 베 이 스 는 다음 과 같이 되 돌려 줍 니 다.

3.키워드

//      ,     ,        0
DATE_FORMAT(FROM_UNIXTIME(pay_time,'%Y-%m-%d'),'%w')
//             
WEEK(DATE_ADD(CURDATE(),interval 6 day),2)
//              
WEEK(date,mode)
//              。
DATE_ADD(date,INTERVAL expr type)
//                     
그림 자 는 거짓말 을 잘 하 는 요정 이다.허공 을 떠 돌아 다 니 며 발견 되 기 를 기다 리 는 것 이다.존재 와 존재 하지 않 는 사이 에...
총결산
위 에서 말 한 것 은 소 편 이 소개 한 SQL 이 데 이 터 를 월 별로 통계 하거나 데 이 터 를 요일 별로 통계 하 는 인 스 턴 스 코드 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!

좋은 웹페이지 즐겨찾기