2014-02-10 2 views
1

Моего стола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%. Процент должен быть рассчитан по количеству учащихся, достигших общего количества студентов. помогите мне решить эту задачу. Благодарю.

+0

Как вы хотите, чтобы эти проценты должны быть рассчитаны? – Kickstart

+0

Отредактировал мой вопрос, и это может ответить на ваш вопрос. – msmohan

ответ

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

+0

Кажется, есть проблема. Если добавить еще одного ученика с отметкой 20 – msmohan

+0

Изменен для сортировки. Должно быть хорошо сейчас – Kickstart

Смежные вопросы