2017-07-17 136 views
0

下面给出的是我TOUR表:MySQL的:每周和每月的SUM

tour_id | tour_date | amount 
    ------------------------------ 
    ABC  | 2016-03-07 | 100 
    ABC  | 2016-03-15 | 200 
    DEF  | 2016-03-07 | 300 
    DEF  | 2016-03-15 | 100 
    GHI  | 2016-03-07 | 30 

我希望得到以下内容:每周

  • 总和
  • 每月
  • 总和。

这最后的数据必须是这样的:

tour_id| weekly sum. | monthly sum. 
    -------------------------------- 
    ABC | 100   | 300  
    DEF | 300   | 400 
    GHI | 30   | 30 
+1

'当月总数'和'每月总额'有什么区别? –

+1

_哪月份是当前月份?一年有12个月。 –

+0

你应该看到哪一周?有53 ... – Frank

回答

0
SELECT 
    tour_id, WEEKLY, MONTHLY 
FROM 
    TOUR T1 
     INNER JOIN 
    (SELECT 
     tour_id, SUM(amount) WEEKLY 
    FROM 
     TOUR 
    GROUP BY tour_id , WEEK(tour_date)) WEEK ON WEEK.tour_id = T1.tour_id 
     INNER JOIN 
    (SELECT 
     tour_id, SUM(amount) MONTHLY 
    FROM 
     TOUR 
    GROUP BY tour_id , DATE_FORMAT(tour_date, '%m')) MONTH ON WEEK.tour_id = MONTH.tour_id 

尝试上面的查询。

希望这会帮助你。

0
SELECT WEEK.* 
    , MONTH.MONTHLY 
FROM (SELECT tour_id 
    , WEEK(tour_date) week 
    , YEAR(tour_date) year 
    , SUM(amount) WEEKLY 
    FROM TOUR 
    GROUP BY tour_id , WEEK(tour_date), YEAR(tour_date)) WEEK 
INNER JOIN (SELECT tour_id 
       , YEAR(tour_date) year 
       , MONTH(tour_date) month 
       , SUM(amount) MONTHLY 
      FROM TOUR 
      GROUP BY tour_id , MONTH(tour_date), YEAR(tour_date)) MONTH ON WEEK.tour_id = MONTH.tour_id AND WEEK.year = MONTH.year