我需要在Access中执行TREAMMEAN,它没有此功能。
在表格中我有很多员工,每个员工都有很多记录。 我需要单独为每个员工提供TRIMMEAN值。
以下查询为所有记录执行TOP 10%:
qry_data_TOP10_ASC
qry_data_TOP10_DESC
unionqry_TOP10_ASCandDESC
qry_data_ALL_minus_union_qry
之后,我可以使用平均值(平均值)。
但我不知道如何为每位员工做这件事。
可视化:
答案 0 :(得分: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;
答案 1 :(得分: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)
)