我有访问查询,它确实需要时间来执行。现在,我必须经过至少四个查询才能获得我想要的结果,即按组排名前 4 的百分比。以下是查询。
- Query1 - 添加计算字段,即 column3。
- Query2 - 为 column3 添加累积字段。
- Query3 - 添加我使用 column3 进行计算的计算字段。calcfield1、calcfield2、calcfield3 使用 UNION 查询将它们组合在一个列 (NewColumn) 中。对 NewColumn 求和并按 GroupID 对它们进行分组。
- Query4 - 按 GroupID 选择 NewColumn 中的前 4 个值。
示例输出(GroupID 的 NewColumn 的前 4 个值):
Group1 1.45
Group1 1.00
Group1 0.45
Group1 0.20
Group2 8.20
Group2 4.48
Group2 3.44
Group2 2.00
当我运行 Query4 时,执行需要一段时间(至少 10 分钟)。由于累积百分比计算,查询必须返回所有记录。
我在 Query3 中尝试了 HAVING 子句,以便在我选择前 4 名时最小化 Query4 中的行,但我无法让它工作。我还尝试在 Query2 中获得前 4 名,以便后续查询可以使用的行更少,但查询需要更多时间,我不得不中断查询的执行。
我想简化或至少优化查询。
表结构:
Table1:
ID - Autonumber
GroupID
Tip1
Tip2
Tip3
Tip4
Sample data Table1:
GroupID Tip1 Tip2 Tip3 Tip4
171 1 5 4 8
172 2 7 5 3
173 8 16 10
Table2:
ID - Autonumber
GroupID
Result1
Result2
Result3
Sample data Table2:
GroupID Result1 Result2 Result3
171 1 5 4
172 12 7 5
173 8 6 3
Table1 和 Table2 使用 GroupID 连接