0

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

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

专栏 | 示例数据
ID|123
ORDER_NUMBER|123ABC REVENUE
|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

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

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

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

谢谢,-克里斯

4

1 回答 1

0

试试这样:

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

我认为可能有更优雅的方式来做同样的事情,但我的陈述也应该有效 =)

于 2013-06-26T22:38:07.967 回答