首页 / MYSQL / MySQL按平均两个平均值排序
MySQL按平均两个平均值排序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL按平均两个平均值排序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2281字,纯文字阅读大概需要4分钟。
内容图文
![MySQL按平均两个平均值排序](/upload/InfoBanner/zyjiaocheng/905/be071e12e52c463796cf289425805e8b.jpg)
我正在竞赛网站上工作,有两种类型的用户,普通网站成员和评委.每个人都可以使用拖放工具按照他们选择的顺序对特定比赛中的条目进行排序.完成后,相关的条目ID将附加一个排名值,然后可用于确定比赛中哪个条目获得最高的平均分数.获胜者实际上将通过平均每组的平均值来确定.
我希望做的是最终得到一个表格,显示特定比赛中的每个条目,标题,然后显示3个值,该条目的avg_normal,该条目的avg_judge,然后将这两个值相加并除以2 ,所以avg_normal和avg_judge每个帐户占avg_all的50%.最后,通过avg_all对表进行排序.
avg_all =((avg_normal avg_judge)/ 2)
他们按顺序订购entry_ids 1,2,3,4,5.排名值从零开始,因此:
entry_id, entry_ranking, author_id
1, 0, 1
2, 1, 1
3, 2, 1
4, 3, 1
5, 4, 1
我希望能够确定1-100的平均值,所以排名为0 = 100分,1 = 90,2 = 80,3 = 70,以及4以上= 5分
每个用户都附加到另一个表中的组,因此他们是普通用户或法官
我希望能够编写一个查找的查询
1.)普通用户投票得分
2.)JUDGE用户平均投票得分
3.)NORMAL和&的平均值. JUDGE SCORE.
所以普通用户平均值= 93.3333,法官平均值= 70,总平均值= 81.66665
感谢下面的答案,两个查询都像冠军一样.
解决方法:
请注意以下事项:
>我假设成员中有一个字段user_type存储’NORMAL’或’JUDGE’
>我已经删除了titles.title的数据和组的连接,因为我看不出它们与你的平均值有什么关系.
.
SELECT
t.title,
AVG(CASE WHEN user_type = 'NORMAL' THEN IF (r.ranking_value = '0', 100, 0) + IF (r.ranking_value = '1', 90, 0) + IF (r.ranking_value = '2', 80, 0) + IF (r.ranking_value = '3', 70, 0) + IF (r.ranking_value = '4', 5, 0) END) AS avg_normal,
AVG(CASE WHEN user_type = 'JUDGE' THEN IF (r.ranking_value = '0', 100, 0) + IF (r.ranking_value = '1', 90, 0) + IF (r.ranking_value = '2', 80, 0) + IF (r.ranking_value = '3', 70, 0) + IF (r.ranking_value = '4', 5, 0) END) AS avg_judge,
(AVG(CASE WHEN user_type = 'NORMAL' THEN IF (r.ranking_value = '0', 100, 0) + IF (r.ranking_value = '1', 90, 0) + IF (r.ranking_value = '2', 80, 0) + IF (r.ranking_value = '3', 70, 0) + IF (r.ranking_value = '4', 5, 0) END) +
AVG(CASE WHEN user_type = 'JUDGE' THEN IF (r.ranking_value = '0', 100, 0) + IF (r.ranking_value = '1', 90, 0) + IF (r.ranking_value = '2', 80, 0) + IF (r.ranking_value = '3', 70, 0) + IF (r.ranking_value = '4', 5, 0) END)) / 2 AS avg_all
FROM rankings r
LEFT JOIN titles t
ON r.entry_id = t.entry_id
LEFT JOIN members m
ON t.author_id = m.member_id
WHERE r.contest_id IN ('CONTEST ID NUMBER')
GROUP BY
t.title
ORDER BY
avg_all;
内容总结
以上是互联网集市为您收集整理的MySQL按平均两个平均值排序全部内容,希望文章能够帮你解决MySQL按平均两个平均值排序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。