列值的 MS Access 百分比

MS Access Percentages of Column Values

我有一个名为 Test 的简单 Access table,有两列 - Field1Field2。 table 中的数据如下所示。

Field1  Field2
1       2
2       2
2       2
2       1
2       1

我正在尝试 return 每列中每种数据类型的出现次数百分比。 (即 - 在 Field1 中,数字 1 存在 20%,数字 2 存在 80%)

我找到了这个查询,它非常有效 return 一次输入一列。

Select Field1, (Count(Field1)* 100 / (select Count(*) From Test)) as fieldA
FROM Test
Group By Field1;

我如何 select 两列?我试过了,但没用。

Select 
  Field1, (Count(Field1)* 100 / (select Count(*) From Test)) as fieldA,
  Field2, (Count(Field2)* 100 / (select Count(*) From Test)) as fieldB
FROM Test
Group By Field1;

抱歉提出这么简单的问题。我几天前才开始使用 Access。

谢谢,

安妮

一种(许多)方法是执行两个单独的查询(每个字段一个)并将它们包装在外部查询中,如下所示:

select * from (
    SELECT Field1, (Count(Field1)* 100 / (select Count(*) From Test)) as fieldA 
    FROM Test 
    GROUP BY Field1
    ) a 
inner join (
    SELECT Field2, (Count(Field2)* 100 / (select Count(*) From Test)) as fieldB 
    FROM Test 
    GROUP BY Field2
    ) b on a.Field1 = b.Field2

这将产生以下结果:

Field1  fieldA  Field2  fieldB
1       20      1       40
2       80      2       60

假设两列中存在相同的数字;如果一个数字只存在于其中一列中,您可能希望将 inner join 更改为 left join

编辑:作为对问题评论中要求的修改(添加更多字段)的后续行动,值得一提的是,由于 Access-SQL 中的连接语义,它可能更容易采取另一种方法,为每个聚合语句保存一个查询SELECT Field1, (Count(Field1)* 100 / (select Count(*) From Test)) AS fieldA FROM Test GROUP BY Field1;,然后使用可视化查询设计工具构建一个使用以前保存的查询作为源的查询。