首页 > 解决方案 > 如何组合来自一张表的查询?

问题描述

我有一张包含日期和一些数据的表格。如何在一个请求中显示每个月(一月、二月、三月)的数据,并同时显示三个月的金额、三个月的平均值和最高付款额?

结果应该是这样的

用户 日期 支付 平衡 平均(余额) 平均(支付) 总和(支付)
用户_1 2016-01-30 25 32 37.6 21.3 64
用户_1 2016-02-28 22 39 37.6 21.3 64
用户_1 2016-03-30 17 42 37.6 21.3 64
用户_2 2016-01-30 33 35 31.6 21.3 95
用户_2 2016-02-28 42 29 31.6 21.3 95
用户_2 2016-03-30 19 31 31.6 31.3 95

我只需两个请求就可以做到这一点

  1. select users, date, pay from table 我收到了每个月的数据

  2. select users avg(balance), avg(pay), sum(pay), max(pay) from table group by users

如何结合这两个查询?

标签: mysqlsql

解决方案


尝试:

select t1.users,
       `date`,
         pay ,
         avg_balance,
         avg_pay,
         sum_pay,
         max_pay
 from table_tbl t1 
 inner join 
 ( select users, 
          avg(balance) as avg_balance, 
           avg(pay) as avg_pay, 
            sum(pay) as sum_pay, 
            max(pay) as max_pay 
    from table_tbl 
    group by users ) as t2
    on t1.users=t2.users;  

演示:https ://www.db-fiddle.com/f/pB6b5xrgPKCivFWcpQHsyE/9


推荐阅读