按用户 ID、月份、总和计算统计信息 - 在列中选择月数

Calculate stats by userid, month, sum - select number of month in columns

提问人:Volodymyr 提问时间:7/16/2019 最后编辑:KIKO SoftwareVolodymyr 更新时间:7/17/2019 访问量:32

问:

我有带列的表user_payments

user_id / payment_date / type_payment / sum
111     /  2018-01-12   / card        / 131
111     /  2018-02-17   /  cash       /  18
124     /  2018-03-21   / card        /  148
119     /  2018-04-01   / card        /  225

我需要通过查询像这样转换它

user_id / 1 (month_numb) type_pay / sum(sum of 1st month) / 2 / 2_sum
111    /  card                    / 131                  / cash/ 18
MySQL的

评论

2赞 KIKO Software 7/16/2019
如果有人在同一个月内用卡和现金付款怎么办?
0赞 KIKO Software 7/16/2019
2017年的第一个月应该加到2018年的第一个月吗?或者该表是否只包含一年的数据?
0赞 The Impaler 7/16/2019
月数是静态的还是动态的?
0赞 Volodymyr 7/16/2019
添加另一个具有当前user_id的 RAW
1赞 Strawberry 7/16/2019
请考虑处理应用程序代码中的数据显示问题。

答:

0赞 dodzb 7/17/2019 #1

据我了解,你有: 年、月、类型和总和, 由于所有这些数据在行级别都是动态的。这就是我想出的。

SELECT p.user_id, YEAR(payment_date), MONTH(payment_date), type_payment, SUM(p.`sum`)
FROM user_payments as p
group by p.user_id, YEAR(payment_date), MONTH(payment_date), type_payment
ORDER BY p.user_id, YEAR(payment_date), MONTH(payment_date), type_payment

动态生成列可能很麻烦。

如果用户 111 在一个月内有 6 次付款怎么办(考虑到还有其他类型)。这是否意味着必须生成更多列才能满足 6 条记录? 在编程方面,拥有动态列可能很困难。

评论

0赞 Volodymyr 7/17/2019
我可能需要转置它,因为就像我在查询的预期结果中写的那样 - 我需要列中的月数,结果应该像 id // 1(月数)付款类型 /// 第一个月的总和 // 2 付款 /// 第二个月的总和