gpt4 book ai didi

MySQL - 基于 SUM 分组到范围

转载 作者:行者123 更新时间:2023-11-30 01:32:03 25 4
gpt4 key购买 nike

预先感谢您查看我的问题。我想要做的是获取用户的交易历史记录并将其所有总订单的收入相加,然后将这些总订单分组为多个部分,并计算每个部分中有多少用户。

我基本上使用一个表来汇总收入数据。出于所有意图和目的,REVENUE 表的结构如下。

专栏 |示例数据
ID|123
ORDER_NUMBER|123ABC
收入|10

每条记录的结构如下,每次购买都有一条记录。我使用以下 SQL 按 ID 聚合 REVENUE

SELECT ID, SUM(ROUND(REVENUE)) as Total_Rev
FROM REVENUE
GROUP BY ID
ORDER BY ID

我得到并输出这样
ID | Total_Rev
1002436 | 11
1002437| 12
1002438 | 5
10024399 | 2
100244 | 4
10024544 | 21
10024584 | 16
10024624 | 4
1002478 | 8
10024789 | 12
10024843 | 4
10024944 | 9

所以我想做的是将IDTotal_rev分组为3个预定义的分割,然后我想计算每个分割中的用户ID。

我的分段由 Total_Rev 定义,如下所示:
低:1-5
中:6-20
高:21+

我只是不确定如何创建正确的 SQL 来执行此分段练习。再次感谢您的浏览,我很乐意提供更多详细信息或回复有关此问题的任何反馈。

谢谢,-克里斯

最佳答案

尝试这样:

SELECT ID, LMH FROM (
SELECT ID, SUM(ROUND(REVENUE)) as Total_Rev, 'LOW' as LMH
FROM REVENUE
GROUP BY ID
HAVING Total_Rev > 0 AND Total_Rev <= 5
UNION ALL
SELECT ID, SUM(ROUND(REVENUE)) as Total_Rev, 'Med' as LMH
FROM REVENUE
GROUP BY ID
HAVING Total_Rev > 5 AND Total_Rev <= 20
UNION ALL
SELECT ID, SUM(ROUND(REVENUE)) as Total_Rev, 'High' as LMH
FROM REVENUE
GROUP BY ID
HAVING Total_Rev > 20) as subquery
ORDER BY ID

我认为可以有更优雅的方法来做到这一点,但我的声明也应该有效 =)

关于MySQL - 基于 SUM 分组到范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331384/

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