在mysql中的总和而不是group by

时间:2014-04-28 08:31:39

标签: mysql sql

我正在制作一个小型乐透游戏,以提高自己的乐趣。 在数据库上,我有

table(id, package, value, price, purchase_code,round)

查看示例。有两个包,package1和package2。 package1的值为3,package2的值为4.这意味着,如果我购买了package1,我得到3张正在玩的票,让我有更大的机会赢得当前一轮,所以它将3条记录插入表,包含信息。所以在这种情况下,我的表中有以下记录:

id     pacakage_id    value   price     purchase_code    round
1      1              3       10        w3hjkrw          1
2      1              3       10        w3hjkrw          1
3      1              3       10        w3hjkrw          1

我想看看用户花了多少钱,为此,我使用了总和(价格)。 好的,但正如你所看到的,三个记录是一次购买,所以sum(price)会给我结果30.我试着按buy_code进行分组,但它没有做我想要的。

以下是代码:

$income_query = mysql_query("SELECT SUM(price) FROM lottery WHERE round = '$current_round' GROUP BY code") or die(mysql_error());
while($result = mysql_fetch_array($income_query)) {
$round_money = $result['SUM(price)']." $";

1 个答案:

答案 0 :(得分:0)

认为您需要执行子查询才能获得包ID价格。可能使用distinct,虽然我只使用普通的聚合函数(MAX将在这里完成工作)。

这样的事情: -

SELECT code, SUM(package_id_price)
FROM(
    SELECT code, package_id, MAX(price) AS package_id_price
    FROM lottery 
    WHERE round = '$current_round' 
    GROUP BY code, package_id
) Sub1
GROUP BY code