Mysql复杂组由学生标记

时间:2014-02-10 08:34:07

标签: mysql

我的表

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

我想要一个查询来显示跟随

等标记达到的百分比
marks          reach_percentage
-------------------------------
 10                100%
 20                 75%     
 40                 50%
 50                 25%

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

1 个答案:

答案 0 :(得分:3)

这样的事情: -

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小提琴: -

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