簡體   English   中英

如何將一列的值除以另一列(除數始終是預定義的固定行)?

[英]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%      |
+--------+-------+-----------+----------+

知道最小年份和月份是我的基礎/總隊列,我怎么能做到這一點?

考慮下面

select *, 
  round(100 * COHORT / (first_value(COHORT) over(order by YEAR, MONTH)), 2) SHARE
from your_table
where YEAR >= 2015 and MONTH >= 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM