hive 如何获取重复行中的百分比?

pcww981p  于 2023-06-22  发布在  Hive
关注(0)|答案(1)|浏览(195)

我有一个表,其中2列的数据是越来越重复。我想找出每一行的百分比。
例如,看看下面的表格
| 工作|最终状态|
| - -----|- -----|
| 一种|成功案例|
| B|成功案例|
| c型|成功案例|
| 一种|失败|
| B|失败|
| c型|失败|
| 一种|未知|
| B|未知|
| c型|未知|
(P.S:数据是这样的,但这只是为了说明目的,而不是实际数据。)
现在我执行代码后,我希望输出像下面提到的一个
| 工作|成功率%|失败%|未知%|
| - -----|- -----|- -----|- -----|
| 一种|33.33%| 33.33%| 33.33%|
| B| 33.33%| 33.33%| 33.33%|
| c型|33.33%| 33.33%| 33.33%|

uklbhaso

uklbhaso1#

你可以使用下面的SQL

select 
job,
100*sum(if(status='Success', 1,0)) / count(*) success_percent,
100*sum(if(status='Failed', 1,0)) / count(*) failed_percent,
100*sum(if(status='Unknown', 1,0)) / count(*) unknown_percent
from mytable
group by job

下面是SQL代码的示例输出

with mytable as (
select 'a' job, 'Success' status union all select 'b' job, 'Success' status union all 
select 'a' job, 'Failed' status union all select 'b' job, 'Unknown' status)

select 
job,
100*sum(if(status='Success', 1,0)) / count(*) success_percent,
100*sum(if(status='Failed', 1,0)) / count(*) failed_percent,
100*sum(if(status='Unknown', 1,0)) / count(*) Unknown_percent
from mytable
group by job

它获取状态计数,并将其除以所有记录的计数以获得%。

相关问题