2014-02-10 3 views
1

내 테이블MySQL의 복잡한 그룹은

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

나는 다음과 같이 표시가 도달 %를 보여주기 위해 쿼리를 원하는

그것은 모든 학생이 도달 마크 (10)처럼 할 필요가
marks   reach_percentage 
------------------------------- 
10    100% 
20     75%  
40     50% 
50     25% 

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