gpt4 book ai didi

MySQL 求和列并显示列中的最后一行

转载 作者:行者123 更新时间:2023-11-29 02:57:02 26 4
gpt4 key购买 nike

我有一张用户表、订阅包和各种用户订阅。我需要获取所有订阅费用的总和并显示最新/最后的订阅。最新的订阅是订阅具有最高的 subscription_id。我怎样才能写我的查询?我的表格如下所示。

用户表

user_id name
1 John
2 Jane
3 Matthew

订阅包表

package_id  package_name
1 Basic
2 Advanced
3 Premium

用户订阅

subscription_id user_id package_id  subscription_cost       date
1 1 1 2 2014-04-01
2 2 1 2 2014-04-01
3 3 1 2 2014-04-01
4 1 1 2 2014-05-01
5 1 2 3.5 2014-06-01
6 2 2 3.5 2014-06-01
7 2 2 3.5 2014-07-01
8 1 3 5 2014-07-01
9 3 2 5 2014-07-01
10 2 2 3.5 2014-08-01
11 1 1 2 2014-08-01

我的结果应该是这样的

name    total_costs latest_package
John 14.5 Basic
Jane 12.5 Advanced
Matthew 7 Premium

最佳答案

因为无论如何你都需要进行聚合,所以我会选择 group_concat()/substring_index() 技巧:

select u.user_id, u.name, sum(subscription_cost) as total_costs,
substring_index(group_concat(p.package_name order by us.date desc), ',', 1) as latest_package
from usersubscriptions us join
users u
on us.user_id = u.user_id join
packages p
on us.package_id = p.package_id
group by u.user_id;

这假设没有包名称有逗号。它还受 group_concat() 结果长度的默认限制——但这种方法在实践中经常有效。

关于MySQL 求和列并显示列中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com