【发布时间】:2021-01-15 22:06:33
【问题描述】:
我有一个包含以下列的表格:
week_number client_id status
以下是每列的含义:
week_number has values like 'W1', 'W2' ... 'W53'.
client_id has values with numbers in it.
status has two values only 'accepted' and 'rejected'.
现在我需要每周进行以下计算,并获取过去 6 周(不包括当前周)的百分比以及每周分组。
find count of 'status' column which are 'accepted' for each week.
-------------------------------------------------------------------
find count of 'status' which are both 'accepted' and 'rejected' for each week.
所以我需要的输出应该是这种格式:
week_number percentage
W1 5.1%
W53 15.9%
W52 2.5%
W51 11.0%
W50 13.6%
W49 19.4%
这有可能做到吗?我试过这样,但这不起作用,而且我不想在这里使用limit 子句来获取过去 6 周的数据。有没有什么方法可以在不使用任何限制子句的情况下有效地做到这一点?
select
week_number,
((select count(status) from event_information where status in ('accepted')) / count(status)) * 100 as percentage
from event_information
group by 1
order by len(week_number) desc, week_number desc
limit 6;
【问题讨论】:
-
您的周数不明确。您如何确定年份?
-
年份将是我们正确的年份,并基于过去 6 周的计算结果?
-
那么数据中就不会有 W52。它还没有发生。
-
我需要过去 6 周,所以当前周是 2,所以现在我们可以自动回到过去 6 周,从当前周计算可以是 1、53、52、51、50、49?不?还是我理解错了?
标签: sql amazon-web-services amazon-redshift