【发布时间】:2012-10-10 21:09:01
【问题描述】:
我很难计算一些简单的平均值。我的桌子:
id / user / action / data
1 / a / unit_price / 40
2 / a / quantity / 1
3 / b / unit_price / 70
4 / b / quantity / 2
Unit_price 是用户的价格,数量是数量。所以我应该得到: (40 + 70 + 70) / 3 = 60
如果我做一个
(AVG(action) WHERE action = unit_price)
我明白了:
(70+40)/2 = 55
如果我做一个
(SUM(action) WHERE action = unit_price) / (SUM(action) WHERE action = quantity)
我明白了:
110 / 3 = 36.6
我发现的最简单的方法是不要放 unit_price 而是放全局价格,然后在 PHP 代码中进行划分以获得 unit_price,但我希望 SQL 可以为我做点什么。
【问题讨论】:
-
我认为您的任何解决方案都不起作用,但我需要更具体:1/这只是全局请求的一部分,所以我认为我将无法添加更多加入并在 SELECT 2/ 中获取列 unit_price 和单独的列数量不会改变问题 3/ 是的,我不想要特定用户的平均价格,但全局 4/ 正确答案通过数量的乘积和每个用户的单位价格,然后是经典的平均数学
-
Lamak 和 Olivier 的回答似乎完美地回答了您的问题。 (在某些假设下)bluefeet 和 Raphael 也是如此。如果您的查询/要求更复杂,则回答者没有精神力量来猜测它们是什么。
-
好的,我得到了很好的答案。只需要找出如何将其放入我的大查询中。谢谢大家