mysql求和字段的值,根据其他字段限制

时间:2017-03-27 12:00:12

标签: mysql sql

我有一张生日和日期表,每个新的一天都会为所有生日添加新记录,年龄为(日期减去生日)。 此外,每个新日期,同一天创建新生日,年龄为0。 下表是一个例子:

Age | BirthDay     | Date         | Users
---------------------------------------------
0   | 2017-01-01   | 2017-01-01   | 100
1   | 2017-01-01   | 2017-01-02   | 70
2   | 2017-01-01   | 2017-01-03   | 50
0   | 2017-01-02   | 2017-01-02   | 40  
1   | 2017-01-02   | 2017-01-03   | 10
0   | 2017-01-03   | 2017-01-03   | 50

现在,我想知道每个生日到达该日期0岁的用户总数,按年龄分组。

结果:

Age | Age0Sum
--------------
0   | 190
1   | 140
2   | 100

说明:

  • 年龄0 - >所有生日都有第0天的值,所以Age0Sum是Age = 0用户数=>的总和。 100 + 40 + 50

  • 年龄1 - >生日2017-01-01 + 2017-01-02已经达到1岁,所以Age0Sum将是他们当天的用户量0 => 100 + 40

  • 年龄2 - >只有一个生日日期(2017-01-01)达到2岁,所以他们的Age0Sum将只是0岁时生日那天的用户=> 100

我已经尝试了很多事情,现在尝试更多,但没有任何具体的解决办法或正确的方法。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

假设表名是UsersTable。

SELECT 
    u1.Age,
    SUM(u2.Users)
FROM
    UsersTable AS ut1
        JOIN
    (SELECT 
        BirthDay, Users
    FROM
        UsersTable
    WHERE
        Age = 0) AS ut2 ON ut1.BirthDay = ut2.BirthDay
GROUP BY Age
ORDER BY Age;

内部选择将获得Age = 0时每个生日的用户数。 然后,与它的连接将获得达到该组年龄的所有记录,并从那时的选择中得出年龄。