2017-07-17 130 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