0

我需要从我们的表格中获取特定日期范围内的销售总额,并显示按星期几分组的结果。(制作图表)

以下是我到目前为止所拥有的

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 的总和,仅针对每个唯一的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-----|  
4

2 回答 2

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,那么这将起作用。

于 2013-05-28T02:11:20.943 回答
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)
于 2013-05-28T02:16:22.003 回答