我的数据格式如下:
TASK, STATUS
MKw11sk, OPEN
JIKL, CLOSED
pp,DELETED
qwert,PRESENT
DDF,OPEN
我正在尝试按状态查找百分比。我想知道状态栏的百分比
我是新手!通常我可以计算整数类型值的百分比,我不必计算这个唯一的字符串计数
我的数据格式如下:
TASK, STATUS
MKw11sk, OPEN
JIKL, CLOSED
pp,DELETED
qwert,PRESENT
DDF,OPEN
我正在尝试按状态查找百分比。我想知道状态栏的百分比
我是新手!通常我可以计算整数类型值的百分比,我不必计算这个唯一的字符串计数
问题是表中每个状态值的百分比是多少?您可以使用窗口函数并为每一行获取正确的值,如下所示:
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;
返回
| 任务 | 地位 | 状态百分比 |
|---|---|---|
| JIKL | 关闭 | 20 |
| MKw11sk | 打开 | 40 |
| DDF | 打开 | 40 |
| 奎特 | 当下 | 20 |
| pp | 已删除 | 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
返回
| 地位 | 状态百分比 |
|---|---|
| 已删除 | 20 |
| 打开 | 40 |
| 当下 | 20 |
| 关闭 | 20 |