【问题标题】:How to calculate the percentage of employee type in OTBI Report?如何计算 OTBI 报告中员工类型的百分比?
【发布时间】:2022-01-23 09:14:27
【问题描述】:

您好,我尝试了很多使用计数和求和的方法。示例表如下:

Name Employee Type Percentage
First E 66.6
Second E 66.6
Third E 66.6
Fourth E 66.6
Fifth C 33.3
Sixth C 33.3

我尝试过使用这样的列公式:COUNT(COUNT("Worker"."Person Number") by "Worker"."Assignment Type")100 /COUNT()

但我认为第一个计数不应该存在,如果我在没有它的情况下使用它,OTBI 会给我一个语法错误。请帮我解决这个问题。

【问题讨论】:

    标签: sql oracle oracle11g oracle-sqldeveloper


    【解决方案1】:

    您可以在这里尝试使用分析函数:

    SELECT Name, "Employee Type",
           100.0 * (COUNT(*) OVER (PARTITION BY "Employee Type") /
                    COUNT(*) OVER () ) AS Percentage
    FROM yourTable
    ORDER BY "Employee Type", Name;
    

    这是 Oracle 的 demo

    如果由于某种原因您不能使用分析函数,那么这里也可以使用连接方法:

    SELECT t1.Name, t1."Employee Type",
           100.0 * t2.cnt / (SELECT COUNT(*) FROM yourTable) AS Percentage
    FROM yourTable t1
    INNER JOIN
    (
        SELECT "Employee Type", COUNT(*) AS cnt
        FROM yourTable
        GROUP BY "Employee Type"
    ) t2
        ON t2."Employee Type" = t1."Employee Type"
    ORDER BY "Employee Type", Name;
    

    【讨论】:

    • 您好,感谢您的回复。根据我对 Oracle OTBI 的了解,不能使用 over()。因此,我尝试了与您的语句最接近的替代方法,即 100* (COUNT("Worker"."Person Number" by "Worker"."Assignment Type") / COUNT(*) ),但它仍然没有给我正确答案,你知道另一种方法吗?
    • @AdityaMudgal 检查不使用分析函数的选项的更新答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多