MS Access TRIMMEAN如何

问题描述 投票:1回答:2

我需要在Access中执行TREAMMEAN,它没有此功能。

在一个表中我有很多员工,每个员工都有很多记录。我需要分别为每个员工提供TRIMMEAN值。

以下查询对所有记录执行TOP 10%:

qry_data_TOP10_ASC

qry_data_TOP10_DESC

unionqry_TOP10_ASCandDESC

qry_data_ALL_minus_union_qry

之后,我可以使用Avg(平均值)。

但我不知道如何为每位员工做这件事。

可视化:

enter image description here注意:编辑此问题是为了简化问题。

access-vba average mean access
2个回答
0
投票

您没有真正在伪代码中提供有关数据字段的信息,但使用您的示例,其中包含基本字段信息,我可以建议以下内容应该如您所述

它假定field1是您唯一的记录ID - 但您没有提到哪些字段是键

SELECT AVG(qry_data.field2) FROM qry_data WHERE qry_data.field1 NOT IN
(SELECT * FROM 
   (SELECT TOP 10 PERCENT qry_data.field1, qry_data.field2
   FROM qry_data
   ORDER BY qry_data.field2 ASC)
   UNION
   (SELECT TOP 10 PERCENT qry_data.field1, qry_data.field2
   FROM qry_data
   ORDER BY qry_data.field2 DESC)
)

0
投票

这应该给你你想要的东西,两个子查询应该关联每个员工的TOP 10(升序和降序)。然后,两个NOT IN应该从Table1记录中删除那些,然后对Employees和Average the Scores进行分组。

SELECT Table1.Employee, AVG(Table1.Score) AS AvgScore
FROM Table1
WHERE ID NOT IN
(
    SELECT TOP 10 ID
    FROM Table1 a
    WHERE a.Employee = Table1.Employee
    ORDER BY Score ASC, Employee, ID
)
AND ID NOT IN
(
    SELECT TOP 10 ID
    FROM Table1 b
    WHERE b.Employee = Table1.Employee
    ORDER BY Score DESC, Employee, ID
)
GROUP BY Table1.Employee;
© www.soinside.com 2019 - 2024. All rights reserved.