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

标签 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 的用户

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

感谢您的帮助。

最佳答案

假设表名称是 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;

内部选择将获取年龄 = 0 时每个生日的用户数量。 然后,与它的连接将获取达到该组年龄的所有记录,并对之前选择的年龄进行求和。

关于mysql求和字段的值,根据其他字段限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045826/

相关文章:

mysql - 使用 scandic 字母的全文搜索会使 MySQL 崩溃

javascript - 在razor上循环SQL语句

mysql - SQL 加入 SQLzoo

sql - 使用 case 语句创建触发器

php - mysql 结果在这里被截断,但那里没有

python - 在mysql中获取自动递增的行ID的时间复杂度

php - 修改php脚本以填充SQL Server 2012

MySQL 更改表的语句失败

mysql - SQL:我的查询有什么问题

mysql - 如何进一步优化SQL查询?