如何为红移中字符串的唯一计数百分比?

Posted

技术标签:

【中文标题】如何为红移中字符串的唯一计数百分比?【英文标题】:How to percentage for unique count of string in redshift? 【发布时间】:2021-01-06 16:31:21 【问题描述】:

我的数据格式如下:

TASK, STATUS
MKw11sk, OPEN
JIKL, CLOSED
pp,DELETED
qwert,PRESENT
DDF,OPEN

我正在尝试按状态查找百分比。我想知道状态栏的百分比

我是新手!通常我可以计算整数类型值的百分比,我不必计算这个唯一的字符串计数

【问题讨论】:

【参考方案1】:

问题是表格中每个状态值的百分比是多少? 您可以使用窗口函数并为每一行获取正确的值,如下所示:

with input (TASK, STATUS) as (
SELECT 'MKw11sk', 'OPEN' UNION ALL
SELECT 'JIKL', 'CLOSED' UNION ALL
SELECT 'pp', 'DELETED' UNION ALL
SELECT 'qwert', 'PRESENT' UNION ALL
SELECT 'DDF', 'OPEN'
    )
select *,
   count(STATUS) over (partition by STATUS) * 100 / count(STATUS) over () as status_percent
from input;

返回

task status status_percent
JIKL CLOSED 20
MKw11sk OPEN 40
DDF OPEN 40
qwert PRESENT 20
pp DELETED 20

您也可以像这样使用普通的GROUP BY

with input (TASK, STATUS) as (
    SELECT 'MKw11sk', 'OPEN' UNION ALL
    SELECT 'JIKL', 'CLOSED' UNION ALL
    SELECT 'pp', 'DELETED' UNION ALL
    SELECT 'qwert', 'PRESENT' UNION ALL
    SELECT 'DDF', 'OPEN'
)
select STATUS,
       count(*) * 100 / (select count(*) from input) as status_percent
from input
group by 1

返回

status status_percent
DELETED 20
OPEN 40
PRESENT 20
CLOSED 20

【讨论】:

是否可以在不从输入中给出表名的总计数(名称)的情况下进行计算 但是你想在不知道总数的情况下如何计算百分比呢?这不是百分比的定义吗 - 价值与总计数的比例为 100 的分数 也许更好地解释你想要计算什么(用例子),然后提供一个有用的例子会更容易

以上是关于如何为红移中字符串的唯一计数百分比?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 R 中使用百分比而不是计数作为 y 轴的数据框创建条形图?

如何获得最近 x 周数据的不同计数,但在红移中按周分组?

aws红移中的ILIKE和NOT ILIKE与总数不同

如何在红移中获取过去 X 周的数据?

红移中的 REGEXP_REPLACE

使用字符串函数反序列化亚马逊红移中的 php 对象