[英]How to divide a value of a column to the total value of that column for every row in SQL?
[英]How to divide the value of a column by another (the divisor is always a predefined and fixed row)?
所以基本上我有一张这样的表格,上面有年份、月份和客户数量(称为群组)。 该列之所以称为群组,是因为在 2015 年 1 月,我计算了我所有的唯一买家,现在我正在检查有多少人在接下来的几个月中返回购买更多产品。
+----------------+-----------+
| YEAR | MONTH | COHORT |
+----------------+-----------+
| 2015 | 01 | 100 |
| 2015 | 02 | 54 |
| 2015 | 03 | 32 |
| 2015 | 04 | 29 |
| 2015 | 05 | 26 |
| 2015 | 06 | 17 |
| 2015 | 07 | 09 |
| 2015 | 08 | 03 |
+--------+-------+-----------+
但是,我需要知道从 2015 年 2 月起返回客户的百分比是多少。 所以我需要这样的东西:
+----------------+-----------+----------+
| YEAR | MONTH | COHORT | SHARE |
+----------------+-----------+----------+
| 2015 | 01 | 212 | 100% |
| 2015 | 02 | 54 | 25% |
| 2015 | 03 | 32 | 15% |
| 2015 | 04 | 29 | 13% |
| 2015 | 05 | 26 | 12% |
| 2015 | 06 | 17 | 8% |
| 2015 | 07 | 09 | 4% |
| 2015 | 08 | 03 | 1% |
+--------+-------+-----------+----------+
知道最小年份和月份是我的基础/总队列,我怎么能做到这一点?
您可以使用标量子查询来查找 2015 年 1 月队列的大小。 然后,使用此值对每个后续队列进行标准化以找到百分比。
SELECT YEAR, MONTH, COHORT,
100.0 * COHORT / (SELECT COHORT FROM yourTable
WHERE YEAR = 2015 AND MONTH = 1) AS SHARE
FROM yourTable
ORDER BY YEAR, MONTH;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.