2015-12-09 5 views
-1

Как перечислить всех учащихся, которые получили средний класс своей группы в таблице SQL? У нас есть 6 group_ids, поэтому есть шесть разных средних классов.Как выбрать студентов, которые получили выше среднего?

 
group_id student grade 
1   James 85 
1   Adam 96 
2   Tom  56 
2   Jane 89 
2   Anny 90 

Результат: ответ

 
group_id student grade 
1   Adam 96 
2   Jane 89 
2   Anny 90 
+3

Это поможет вам в следующих вопросах: http://stackoverflow.com/help/how-to-ask – danihp

+0

Что такое РСУБД? Разрешены ли оконные функции? –

+0

'SELECT * FROM Students WHERE Locality = 'Lake Woebegone';' –

ответ

2

ashkufaraz находится ближе, но не совсем верно

select group_id,student,grade from students one where grade > 
(select avg(grade) from students two where two.group_id = one.group_id) 
0

Вопрос пометил SQL, так что это ответ, используя стандартный SQL:

Одним из вариантов является использование оконной функции:

select group_id,student,grade 
from (
    select group_id,student,grade, 
     avg(grade) over (partition by group_id) as group_avg 
    from studends 
) t 
where grade > group_avg; 

Это дополнительное преимущество, при котором вы также можете отображать среднее значение группы вместе с результатом без дополнительного соединения или подвыбора.

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