小编Jun*_*art的帖子

如何在 mysql 的同一查询中使用 SUM 和 COUNT 并获得准确的结果

我有两个处于一对多关系的表。更具体地说,t1 是订单信息,t2 是这些订单的行项目详细信息。

我正在尝试使用这样的查询:

   SELECT COUNT(DISTINCT(t1.id)) order_count,
          SUM(t1.order_total) order_total,
          SUM(t2.product_price) product_total,
          DATE(t1.order_date) order_date
     FROM t1
LEFT JOIN t2 ON t1.id = t2.id
 GROUP BY t1.order_date
Run Code Online (Sandbox Code Playgroud)

该查询返回 order_count 的正确值。然而,其他值被错误地夸大。据我所知,通过左连接,我添加了额外的行,这就是总和不正确的原因。我只是不知道如何解决它。

任何帮助将不胜感激。

编辑:输出应该是这样的:

日期 | 订单数量 | 累计

我根据回复开发了下面的查询。它正确返回所有值,除了 coupon_total 之外,它每次都返回 0。

SELECT
COUNT(DISTINCT(o.order_number)) order_count,
DATE(o.order_date) order_date,
SUM(o.total_product_total) product_total,
SUM(o.total_shipping) shipping_total,
SUM(o.total_grand_total) grand_total,
o.coupon_total
FROM (
 SELECT
 DATE(o.order_date) order_date,
 o.order_number,
 o.total_product_total,
 o.total_shipping,
 o.total_grand_total,
 IF(op.record_type='cpn',SUM(op.price),0) coupon_total
 FROM orders o
 LEFT JOIN orders_products op ON o.order_number=op.order_number
 GROUP BY o.order_number
) o
GROUP BY DATE(o.order_date)
ORDER …
Run Code Online (Sandbox Code Playgroud)

mysql sql join aggregate-functions

3
推荐指数
1
解决办法
4万
查看次数

标签 统计

aggregate-functions ×1

join ×1

mysql ×1

sql ×1