如何从100分的工资中获得百分比
Posted
技术标签:
【中文标题】如何从100分的工资中获得百分比【英文标题】:how to get percentage out of 100 for salary 【发布时间】:2020-10-14 18:58:18 【问题描述】:我正在使用 sql developer,我想:
将工资总额添加到最后一行
新列中的百分比,它应该显示每个员工在 100% 中所占的百分比
怎么做?
select name ,sal from(
select last_name name,salary sal from employees e
where rownum <=5
)
想要的输出是:
【问题讨论】:
【参考方案1】:您可以使用grouping set
执行此操作,但有点棘手:
select name, salary, salary / max(salary) over ()
from t
group by grouping sets ((name, salary) ());
诀窍在于窗口函数是在 grouping sets
之后计算的,因此它包括总数。因此使用max(salary)
而不是sum(salary)
。
【讨论】:
【参考方案2】:您可以使用窗口函数来计算工资比率(或百分比),并使用union all
聚合查询来生成总计:
select last_name, salary, salary / sum(salary) over() salary_ratio from employee
union all
select null, sum(salary), 1 from employee
这会为您提供比率,即0
和1
之间的值。如果你想要百分比,那么你可以乘以100
。
【讨论】:
【参考方案3】:您可以使用分析函数RATIO_TO_REPORT
得到工资占总工资的百分比。如果您希望看到更少的小数位,可以在最后一列添加四舍五入。
查询
WITH
employees (name, sal)
AS
(SELECT 'King', 24000 FROM DUAL
UNION ALL
SELECT 'Kochhar', 17000 FROM DUAL
UNION ALL
SELECT 'De Haan', 17000 FROM DUAL
UNION ALL
SELECT 'Hunold', 9000 FROM DUAL
UNION ALL
SELECT 'Ernst', 6000 FROM DUAL)
SELECT name, sal, (ratio_to_report (sal) OVER () * 100) AS percent
FROM employees;
结果
NAME SAL PERCENT
__________ ________ ____________________________________________
King 24000 32.87671232876712328767123287671232876712
Kochhar 17000 23.28767123287671232876712328767123287671
De Haan 17000 23.28767123287671232876712328767123287671
Hunold 9000 12.32876712328767123287671232876712328767
Ernst 6000 8.21917808219178082191780821917808219178
【讨论】:
以上是关于如何从100分的工资中获得百分比的主要内容,如果未能解决你的问题,请参考以下文章
我可以获得一些关于如何通过在 C# 中使用 webhook API 从 Forge 获取文件翻译进度百分比的帮助/示例吗?