从MySQL中获得2组函数的平均值

时间:2018-09-07 10:27:32

标签: mysql

我正在尝试从数据库中获取许多不同值的平均值。

作为示例,我将使用“购买”表。我们的用户以不同的方式输入信息。其中一些将发票分开,然后将其放入正确的供应商,其他一些则只是为所有输入完整的价值。使用全部价值的是容易的。我知道我可以跑步

SELECT store_id, stocktake_id, SUM(cost_value)/COUNT(cost_value) FROM store_purchases GROUP BY store_id ORDER BY store_id DESC

它工作正常。但是,此查询不能为单独输入发票的用户提供正确的结果。

我尝试这样做

SELECT store_id, stocktake_id, SUM(cost_value)/(SELECT COUNT(cost_value) FROM store_purchases GROUP BY stocktake_id, store_id) FROM store_purchases GROUP BY store_id ORDER BY store_id DESC

但是我收到一条错误消息,说子查询返回了多个行。所以我尝试了以下解决方案

SELECT store_id, stocktake_id, SUM(cost_value)/count(DISTINCT stocktake_id) FROM store_purchases GROUP BY store_id ORDER BY store_id DESC

这是正确的解决方法吗?这是我从store_purchases中获得的结果的示例屏幕截图,该商店分别输入enter image description here

这是正确的方法还是有更好的方法来求出平均值?

1 个答案:

答案 0 :(得分:0)

如果我正确理解,可以尝试一下,使用子查询获取SUMCOUNT结果集,然后再获取join

SELECT  t1.stocktake_id,t1.store_id, (totalPrice / cnt)
(
    select stocktake_id,sum(store_purchases) totalPrice
    FROM store_purchases
    GROUP BY stocktake_id
)t1 
join 
(
    select stocktake_id,store_id,count(store_purchases) cnt
    FROM store_purchases
    GROUP BY stocktake_id, store_id
)t2 on t1.stocktake_id = t2.stocktake_id