如何为红移中字符串的唯一计数百分比?
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 的分数? 也许更好地解释你想要计算什么(用例子),然后提供一个有用的例子会更容易以上是关于如何为红移中字符串的唯一计数百分比?的主要内容,如果未能解决你的问题,请参考以下文章