2013-05-28 82 views
0

我需要從特定日期範圍的表格中獲取銷售總額,並顯示按星期幾分組的結果。 (使圖表)獲得第一列ON DISTINCT第二列的總和

以下是我迄今爲止

SELECT DAYNAME(sale_date), SUM(total_price + total_tax) 
     FROM threewor_vend.vendsales AS s 
     WHERE s.register_id = '07709f8e-8d90-11e0-8e09-4040f540b50a' 
     AND sale_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 
     GROUP BY DAYOFWEEK(sale_date) 

這將返回日期和銷售總額的每一天,這是偉大的。

事情是,如果每個銷售項目有多個項目,則「每次銷售」有多行。所以總價格被重複多次。所以我不能只得到total_price的總和。

我需要得到total_price的總和,只對每個UNIQUE sale_id。

sale id | item | itemqty | item value | item total | total_price | 
---1----|-drum-|-1-------|-60.00------|-60.0-------|-$230.00-----| 
---1----|-uke--|-1-------|-170.00-----|-170.0------|-$230.00-----| 

回答

1

在MySQL中,你可以通過sale_id組。這將消除重複:

SELECT DAYNAME(sale_date), SUM(total_price + total_tax) 
    FROM (select s.* 
      from threewor_vend.vendsales s 
      group by sale_id 
     ) s 
    WHERE s.register_id = '07709f8e-8d90-11e0-8e09-4040f540b50a' 
    AND sale_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 
    GROUP BY DAYOFWEEK(sale_date); 

只要其他列 - sale_datetotal_pricetotal_taxregister_id - 是對所有的行對於給定sale_id相同,那麼這將工作。

1

由於您要爲每筆銷售多次存儲total_price,因此您的結果正在倍增。

下面是一個使用子查詢一個選項與DISTINCT採取四個字段都爲每個重複出售相同:

SELECT DAYNAME(sale_date), SUM(total_price + total_tax) 
FROM (
    SELECT DISTINCT sale_date, total_price, total_tax, register_id 
    FROM threewor_vend.vendsales 
    WHERE s.register_id = '07709f8e-8d90-11e0-8e09-4040f540b50a' 
     AND sale_date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY) 
) t 
GROUP BY DAYOFWEEK(sale_date) 
相關問題