我有一个包含学生和导师的 MS Access 表。每个学生最多可以有一名导师。导师本身可能是学生,所以他们也可能有导师。示例数据如下所示:
Student | Tutor
--------|--------
Alice |
Brandon |
Charlie | Alice
Doug | Charlie
Erin | Charlie
我想用学生或导师的人数除以学生人数。为简单起见,假设这里的所有名称都是唯一的。
我能够获取分子的查询:
SELECT Count(*) AS Expr1
FROM (SELECT Student FROM Tutors WHERE Tutor IS NOT NULL
UNION SELECT Tutor FROM Tutors WHERE Tutor IS NOT NULL)
分母:
SELECT Count(*) AS Expr2
FROM (SELECT DISTINCT Student FROM Tutors)
第一个查询给了我 4,第二个查询给了我 5。这很好。我不知道如何在不出现错误的情况下将两者结合起来,得到所需的结果 4 / 5 * 100。我已经查看了其他几个解决方案,但它们似乎在 FROM 中有相同的表声明。
试试这个,看看是否有帮助。
SELECT (Numerator.Expr1 / Denominator.Expr2) * 100 AS Percentage
FROM
(
SELECT COUNT(*) AS Expr1
FROM (
SELECT Student FROM YourTable WHERE Tutor IS NOT NULL
UNION
SELECT Tutor FROM YourTable WHERE Tutor IS NOT NULL
) AS Subquery1
) AS Numerator,
(
SELECT COUNT(*) AS Expr2
FROM (SELECT DISTINCT Student FROM YourTable)
) AS Denominator;
将 YourTable 替换为您的表的实际名称。该查询计算子查询中的分子和分母,然后在主查询中将它们组合起来计算百分比。
在此查询中:
Subquery1 计算作为学生或导师的不同学生的计数。 分母计算表中不同学生的数量。 主查询将分子除以分母,然后乘以 100 以获得百分比。 这将为您提供所需的结果 4/5 * 100,即 80。