group by 中有计算问题的问答整理
被评分人 评分人 评分
张 李 12
陈 李 12
冯 李 12
杨 李 12
陈 张 12
李 张 12
冯 张 12
杨 张 12
张 冯 12
李 冯 12
杨 冯 12
陈 冯 12
张 杨 12
李 杨 12
冯 杨 12
陈 杨 12
张 陈 12
冯 陈 12
杨 陈 12
李 陈 12
select 被评价人,avg(评分) from test group by 被评价人
我想问一下在这里求平均分的时候,我想得到去掉每个被评价人的一个最高分和一个最低分然后再求平均分有什么办法呢?
-
-- Test Data: # --整理zjcxc给出的方法 IF object_id ( ' # ' ) is not NULL Drop table # else Create table # (被评分人 nvarchar ( 20 ),评分人 nvarchar ( 20 ),评分 int ) Go insert # select ' 张 ' , ' 李 ' , ' 12 ' Union all select ' 陈 ' , ' 李 ' , ' 12 ' Union all select ' 冯 ' , ' 李 ' , ' 12 ' Union all select ' 杨 ' , ' 李 ' , ' 12 ' Union all select ' 陈 ' , ' 张 ' , ' 12 ' Union all select ' 李 ' , ' 张 ' , ' 12 ' Union all select ' 冯 ' , ' 张 ' , ' 12 ' Union all select ' 杨 ' , ' 张 ' , ' 12 ' Union all select ' 张 ' , ' 冯 ' , ' 12 ' Union all select ' 李 ' , ' 冯 ' , ' 12 ' Union all select ' 杨 ' , ' 冯 ' , ' 12 ' Union all select ' 陈 ' , ' 冯 ' , ' 12 ' Union all select ' 张 ' , ' 杨 ' , ' 12 ' Union all select ' 李 ' , ' 杨 ' , ' 12 ' Union all select ' 冯 ' , ' 杨 ' , ' 12 ' Union all select ' 陈 ' , ' 杨 ' , ' 12 ' Union all select ' 张 ' , ' 陈 ' , ' 12 ' Union all select ' 冯 ' , ' 陈 ' , ' 12 ' Union all select ' 杨 ' , ' 陈 ' , ' 12 ' Union all select ' 李 ' , ' 陈 ' , ' 12 ' -- (20 行受影响) -- select * from # select 被评分人, ( SUM (评分) - MIN (评分) - MAX (评分)) / ( COUNT ( * ) - 2 ) 得分 from # group by 被评分人 /* 被评分人 得分 陈 12 冯 12 李 12 杨 12 张 12 */