【发布时间】:2018-09-10 17:32:38
【问题描述】:
假设我有一个表 TRANSACTIONS:
desc customer_transactions;
+------------------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| transactionID | varchar(128) | YES | | NULL | |
| customerID | varchar(128) | YES | | NULL | |
| amountAuthorized | DECIMAL(5,2) | YES | | NULL | |
| createdDatetime | datetime | YES | | NULL | |
+------------------------------+--------------+------+-----+---------+----------------+
此表包含过去 5 年 SAAS 业务的信用卡交易记录。该公司有一个典型的每月订阅模式,客户根据他们的计划自动收费。
我需要找到对所有收入(每个时间段)负责 80% 的顶级客户。 SAAS 业务非常不平衡,因为有些客户每月支付 10 美元,而另一些客户可能每月支付数千美元。
稍后我将添加一个“时间段”过滤器,只需要聚合方面的帮助。
我想生成一份报告,其中我只选择以这种格式产生 80% 收入的客户:
+------------+-------+
| customerID | Total |
+------------+-------+
不知道为什么这个问题被“搁置”。我只需要帮助编写查询并且没有足够的 SQL 经验。基本上,问题的标题说明了这里需要什么:
我需要列出客户及其相应的总数,但是,只需要选择那些占总收入 80% 的客户。该报告需要汇总每个客户的总数。
使用 MariaDB 10.3.9 版
【问题讨论】:
-
如何使用这些数据计算“收入百分比”?除了
id,我在表格上看不到任何数字类型。还有80%的收入是什么?总收入的80%?根据定义,这只能是 0 个或 1 个客户,因为如果有一个客户产生了 80% 或更多,那么任何其他客户的产生量都将不到总数的 20%。 -
为客户计算收入背后的逻辑是什么?
-
编辑问题添加一些关于当前问题的更多信息,你卡在哪里,向我们展示你当前的尝试。
-
另外,您使用的是什么 DBMS(mysql、sql server、oracle、db2、postgres 等)?
-
为什么数量是 varchar !
标签: mysql sql mariadb cumulative-sum subtotal