具有多个group by的mysql查询

时间:2013-10-05 11:44:53

标签: mysql

我正在尝试编写一个SQL查询,但这对我来说有点复杂。

我有一个包含这些字段的表格:

user1, user2, user1Payed, user2Payed.

user1user2内有电子邮件。 user1Payeduser2Payed内有数字,代表一种付款方式。

这是一个表格,代表用户所做的所有订单。 user1user1Payed受意义约束。 user2user2Payed也受意义约束。 我的系统中的订单是由2个用户完成的,这些用户不必是不同的。这意味着订单可以是同一个用户。在这种情况下,user1Payeduser2Payed可能会有不同的值。

我的目标是编写一个查询,该查询将计算在特定数量上总共userPayeduser1Payed + user2Payed)的所有不同用户。这意味着我需要计算与不同用户关联的所有user1Payeduser2Payed的数量。

我知道应该在这里使用GROUP BY,但这还不够,因为这不会解决所有问题。

举例说明我的user1user2在特定行中的用户名是相同的,我将如何计算user1Payeduser2Payed

似乎我应该做的是创建一个包含特定用户user1的所有行的表格,然后检查其user1Payed。 然后创建另一个表,其中包含用户user2和计数user2Payed的所有行。 在此之后我需要总结2个结果,从这个结果我可以得出最终结果。

但我不知道我将如何实现这一点。

非常感谢。

1 个答案:

答案 0 :(得分:0)

使用UNION组合每个用户列的数据。

SELECT user, SUM(amount) total
FROM (
    SELECT user1 user, user1Payed amount
    FROM table
    UNION ALL
    SELECT user2 user, user2Payed amount
    FROM table
) u
GROUP BY user

我不知道“受意义约束”是什么意思,我希望它与答案无关。