2013-01-22 36 views
0

我有一種不是非常標準化的MySQL表具有以下值:MySQL的總和,根據以往的按日期選擇

customer_ID | date | score | sale 

至於我進球了「購買體驗」,我想檢查根據他的最後得分爲每個客戶的總銷售價值。我不介意以前的分數,只是最後一個分數。

比方說,我有:

customer_ID | date  | score | sale 
a   | yesterday | 3  | 10 
a   | today  | 6  | 35 
b   | today  | 10 | 20 
c   | yesterday | 4  | 5 

結果,爲客戶購買與分數> 5應該是:

num of customers | total sale values 
2    | 65 

如何建立這樣的查詢任何想法?

編輯:

我想知道的是多少有一個客戶在採購總額中度過,但只是對客戶,其最後得分大於5

+0

[你嘗試過什麼?](http://www.whathaveyoutried.com/)參見[問諮詢】(http://stackoverflow.com/questions/ask-advice ), 請。 –

+0

解釋不足。嘗試改進它! – Strawberry

+1

當你說'昨天'它真的是一個字面值'昨天'? –

回答

1
SELECT COUNT(DISTINCT aa.customer_ID) `num of customers`, 
     SUM(aa.sale) `total sale values ` 
FROM table1 aa 
     INNER JOIN 
     (
      SELECT a.customer_ID 
      FROM table1 a 
        INNER JOIN 
        (
         SELECT customer_ID, max(date) max_date 
         FROM table1 
         GROUP BY customer_ID 
        ) b ON a.customer_ID = b.customer_ID AND 
          a.date = b.max_date AND a.score > 5 
     ) final ON aa.customer_ID = final.customer_ID 

更加簡化,

SELECT COUNT(DISTINCT c.customer_ID) `num of customers`, 
     SUM(c.sale) `total sale values ` 
FROM table1 a 
     INNER JOIN 
     (
      SELECT customer_ID, max(date) max_date 
      FROM table1 
      GROUP BY customer_ID 
     ) b ON a.customer_ID = b.customer_ID AND 
       a.date = b.max_date AND a.score > 5 
     INNER JOIN table1 c 
      ON a.customer_ID = c.customer_ID 
+1

太棒了!這正是我正在尋找的@JW。非常感謝。 – fedorqui