关闭

**发现sql去掉最高分和最低分没多少人写,那我来写一篇**

标签: sql去掉最高最低分
703人阅读 评论(0) 收藏 举报
分类:

我现在要实现的业务是去掉专家打分的n个最高分和教师打分的m个最低分,还要从,还有专家和教师的权重,再计算平均分。
我们来理一下逻辑,首先我们要拿到去掉最高分和最低分的表,表为activity_papers_mark,type=0代表专家,type=1代表教师

(SELECT * FROM activity_papers_mark WHERE type = 0 ORDER BY score DESC LIMIT n,50000) 
UNION ALL (SELECT * FROM activity_papers_mark WHERE type = 1 ORDER BY score LIMIT n,50000)

这边50000写的不好,其实是需要去count(*)的,但是mysql没有更好的办法去实现从第几列开始。下一步就是拿到教师的平均分和专家的平均分,需要乘以权重

    1.
SELECT  am.pid, ( IFNULL( avg(CASE am.type
 WHEN 0 THEN score * 1 END  ), 0 ) + IFNULL( avg(CASE am.type WHEN 1 THEN score * 0 END ),0)) AS 'score' FROM   (( SELECT * FROM activity_papers_mark WHERE type = 0    ORDER BY score DESC LIMIT 1, 50000  ) UNION ALL             (SELECT * FROM activity_papers_mark WHERE type = 1
ORDER BY score LIMIT 0,50000 )) am

最后可以加总的where条件,这当然根据自己的需要去改了
第一次,写的不好请多见谅

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:759次
    • 积分:30
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档