mysql复杂分组按学​​生分

标签 mysql

我的 table

student_id     Mark
-------------------
    1          50
    2          10
    3          20
    4          40

我想要一个查询来显示如下标记所达到的百分比

marks          reach_percentage
-------------------------------
 10                100%
 20                 75%     
 40                 50%
 50                 25%

它需要像 所有学生都达到 10 分,所以 100%, 3 名学生达到 20 分,所以 75%, 标记 40 由 2 个学生达到 50%, 1 名学生达到 50 分,即 25%。百分比应按达到的学生人数占学生总数计算。 帮我解决这个任务。谢谢。

最佳答案

像这样:-

SELECT a.Mark, (COUNT(DISTINCT b.student_id) / total_count) * 100
FROM marks_table a
INNER JOIN marks_table b
ON a.Mark <= b.Mark
CROSS JOIN 
(
    SELECT COUNT(Mark) AS total_count
    FROM marks_table
) Sub1
GROUP BY Mark;

SQL fiddle 在这里:-

http://www.sqlfiddle.com/#!2/93e4df/3

关于mysql复杂分组按学​​生分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21672269/

相关文章:

php - 多个用户登录

mysql - 下面给出了如何按照我需要的方式在 mysql 中获取输出

mysql - 选择用户不是任何人的 friend

mysql - MySQL 5.7 的 Windows 服务突然无法启动。错误 1067

c# - 如何检查表中是否存在值,如果存在则删除它?

mysql - 基于多列获取两个 MySQL 表差异的有效方法是什么?

mysql - 获取两个表的唯一行

php - 如何从mysql中按集合计算每个组的总数

java sql SQLException : Parameter index out of range (1 > number of parameters, 这是0)!

mysql - 如何在cakephp中查找最新的记录?