将百分比列添加到MS Access Query

时间:2013-10-30 19:52:59

标签: sql ms-access formula percentage

我正在尝试添加一列来计算MS Access Query中不同产品的百分比。基本上,这是我想要达到的查询结构:

                                产品|                                   总计                       的百分比                    
                    PROD1 |                      15 |                      21.13%                   
                    Prod2的|                      23 |                      32.39%                   
                    Prod3 |                      33 |                      46.48%                   
                   产品|                       71 |               的 100%                  


找到我使用的百分比的公式是:([产品的总Q数] / [所有产品的总数])* 100,但是当我尝试使用表达式构建器(因为我的SQL技能是基本的)时MS Access计算它..

= [CountOfProcuts] / Sum([CountOfProducts])

..我收到一条错误消息“在GROUP BY子句中不能有聚合函数..(表达式在这里)”。我还尝试了两个查询选项:一个只计算总数,另一个使用第一个来计算百分比,但结果是相同的。

如果有人可以帮助我,我将不胜感激。

1 个答案:

答案 0 :(得分:6)

使用此查询,您可以获得所需输出的最后一行。

SELECT
    y.Product,
    y.Total,
    Format((y.Total/sub.SumOfTotal),'#.##%') AS Percentage
FROM
    YourTable AS y,
    (
        SELECT Sum(Total) AS SumOfTotal
        FROM YourTable
    ) AS sub;

由于该查询不包含JOINWHERE条件,因此它会在表和子查询的单行之间返回cross join

如果您需要问题示例的最后一行,您可以UNION查询另一个返回您想要的伪造行的查询。在这个例子中,我使用了custom Dual table,它被设计为始终只包含一行。但是您可以替换另一个返回单行的表或查询。

SELECT
    y.Product,
    y.Total,
    Format((y.Total/sub.SumOfTotal),'#.##%') AS Percentage
FROM
    YourTable AS y,
    (
        SELECT Sum(Total) AS SumOfTotal
        FROM YourTable
    ) AS sub
UNION ALL
SELECT
    'Product',
    DSum('Total', 'YourTable'),
    '100%'
FROM Dual;