![]() |
Вопрос по MS SQL
Есть 2 таблицы students(id,name) и results (id,subject,mark)
Нужен запрос, который выведет список студентов с максимальным средним баллом. :help: |
Во второй таблице id является идентификатором строки или идентификатором студента, к которому данная строка относится?
|
Цитата:
|
Полагаю вв results уже средние оценки? Сколько студентов надо (добавьте в запрос после select с нужным количеством TOP N)?
Код:
SELECT * FROM students s JOIN results r ON (s.id = r.id) |
Цитата:
а в самом результате вывести имена студентов только с максимальными средними баллами. т.е. нужно написать подзапрос, который простой для не новичков, но я затрудняюсь |
Цитата:
Цитата:
Думаю как-то так тогда: Код:
SELECT TOP 1 WITH TIES name, AVG(mark) as avg_mark FROM students s JOIN results r ON (s.id = r.id) GROUP BY s.id |
Цитата:
Цитата:
|
Цитата:
Код:
SELECT TOP 1 WITH TIES name, AVG(mark) as avg_mark FROM students s JOIN results r ON (s.id = r.id) GROUP BY s.id ORDER BY avg_mark DESC |
Цитата:
ведь среди средних баллов для разных студентов, могут быть и тройки и четверки - нужно выбрать с максимальными баллами т.е. с пятерками или четверками если пятерок нет.... |
Так запрос и выберет именно:
Цитата:
|
Цитата:
Теперь всё понятно.:yees: |
Цитата:
|
Часовой пояс GMT +4, время: 23:43. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.