Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Прошу оказать помощь в решении запроса. / 25 сообщений из 26, страница 1 из 2
11.11.2013, 17:15:35
    #38460744
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
В базе даны две таблицы:
Pupils (id, NameSurname, yearOfBirth)
LearningAchievements (pupil_id, discipline, mark)

Внимание, знатоки, вопрос:
Каким образом написать запрос, который выдаст NameSurname ученика и его средний бал с самой лучшей успеваемостью (это должен быть один самый лучший, даже если таких несколько)?

Заранее благодарен за помощь!
...
Рейтинг: 0 / 0
11.11.2013, 17:32:38
    #38460786
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Сформулируй детальнее, что значит "с самой лучшей успеваемостью"...
...
Рейтинг: 0 / 0
11.11.2013, 17:41:09
    #38460805
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
MasterZiv,
имеется ввиду наибольший средний балл.
Табл.1
id NameSurname
1 Вася Иванов
2 Петя Зверев
3 Коля Пушкин
4 Валера Долгий
5 Аркадий Северный

Табл.2
pupil_id Предмет Оценка
1 Математика 4
1 Физкультура 3
1 Биология 2
1 Физика 4
1 Химия 5

2 Математика 3
2 Физкультура 3
2 Биология 2
2 Физика 2
2 Химия 2
и т.д.
...
Рейтинг: 0 / 0
11.11.2013, 17:49:33
    #38460831
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
...
Рейтинг: 0 / 0
11.11.2013, 18:06:17
    #38460870
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Akina,
я вам благодарен, то у меня не тот уровень знаний.

Вычитал на форуме вариант:

SELECT TOP 1 WITH TIES NameSurname
Вроде, что-то рисуется, но MySQL Workbench выдаёт ошибку в этой строке.
...
Рейтинг: 0 / 0
11.11.2013, 18:13:06
    #38460883
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Seven_HSELECT TOP 1 WITH TIES NameSurname
Вроде, что-то рисуется, но MySQL Workbench выдаёт ошибку в этой строке.потому что вы не умеете читать буквы
конкретнее - отличать "S" от "y"
...
Рейтинг: 0 / 0
11.11.2013, 18:17:39
    #38460893
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
tanglir,

что вы хотели этим сказать?
...
Рейтинг: 0 / 0
11.11.2013, 18:51:05
    #38460930
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Seven_HВычитал на форуме вариант:

SELECT TOP 1 WITH TIES NameSurname
Вроде, что-то рисуется, но MySQL Workbench выдаёт ошибку в этой строке.Это диалект MS SQL, в MySQL он не работает.
...
Рейтинг: 0 / 0
11.11.2013, 18:52:35
    #38460934
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
miksoft,

Отлично... Какие буду ещё варианты?
...
Рейтинг: 0 / 0
11.11.2013, 18:56:15
    #38460939
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
К тому же WITH TIES навылет противоречит исходной задаче...
...
Рейтинг: 0 / 0
11.11.2013, 18:59:34
    #38460948
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Akina,

проблема заключается в том что мне необходимо:
1) подсчитать средний балл каждого студента по 5-ти предмета
2) найти самый лучший балл

Объединить две таблицы я смогу без проблем... Но мне нужно, хотя бы, понять, как найти средний балл каждого из них по всем предметам...
...
Рейтинг: 0 / 0
11.11.2013, 19:01:42
    #38460954
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Seven_Hкак найти средний балл каждого из них по всем предметам...
GROUP BY + AVG()
...
Рейтинг: 0 / 0
11.11.2013, 19:03:42
    #38460955
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Код: sql
1.
2.
3.
4.
5.
SELECT Pupils.NameSurname
FROM Pupils JOIN LearningAchievements ON Pupils.id=LearningAchievements.pupil_id
GROUP BY Pupils.id, Pupils.NameSurname
ORDER BY AVG(LearningAchievements.mark) DESC, Pupils.NameSurname
LIMIT 1

Вот только не помню, работает ли ORDER BY AVG().
...
Рейтинг: 0 / 0
11.11.2013, 19:07:06
    #38460960
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Akina,

ОТЛИЧНО! Получилось.
Если у меня два лучших студента, имеющих одинаковый балл. Что тогда?
...
Рейтинг: 0 / 0
11.11.2013, 19:08:39
    #38460962
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
miksoftВот только не помню, работает ли ORDER BY AVG().
Работает:
ORDER BY AVG(оценка ученика) DESC
...
Рейтинг: 0 / 0
11.11.2013, 19:09:19
    #38460963
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Seven_HmiksoftВот только не помню, работает ли ORDER BY AVG().
Работает:
ORDER BY AVG(оценка ученика) DESCТогда в целом годится?
...
Рейтинг: 0 / 0
11.11.2013, 19:17:35
    #38460967
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
miksoft,

не то, что-то... но спасибо!
Это то, что он запрос выдал одного, у кого AVG(оценка) была 9, но у меня двое, у кого она же равна 10....
...
Рейтинг: 0 / 0
11.11.2013, 19:23:33
    #38460977
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Seven_Hmiksoft,

не то, что-то... но спасибо!
Это то, что он запрос выдал одного, у кого AVG(оценка) была 9, но у меня двое, у кого она же равна 10....Тогда показывайте более приближенные к реальности данные. В показанных данных ни 9, ни 10 быть не может.
Хотя я ошибки в запросе не вижу.
Для контроля уберите LIMIT 1 и посмотрите что он вообще выдает.
...
Рейтинг: 0 / 0
11.11.2013, 19:28:08
    #38460981
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Seven_HВ базе даны две таблицы:
Pupils (id, NameSurname, yearOfBirth)
LearningAchievements (pupil_id, discipline, mark)

Внимание, знатоки, вопрос:
Каким образом написать запрос, который выдаст NameSurname ученика и его средний бал с самой лучшей успеваемостью (это должен быть один самый лучший, даже если таких несколько)?


Код: sql
1.
2.
3.
4.
5.
select p.NameSurname
from Pupils p
left join LearningAchievements l on l.pupil_id = p.id
order by AVG(l.mark) desc
limit 1;
...
Рейтинг: 0 / 0
11.11.2013, 19:29:37
    #38460985
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
MasterZiv,

А left зачем? ученик без отметок явно на отличника не тянет :)
...
Рейтинг: 0 / 0
11.11.2013, 19:29:51
    #38460986
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
MasterZivSeven_HВ базе даны две таблицы:
Pupils (id, NameSurname, yearOfBirth)
LearningAchievements (pupil_id, discipline, mark)

Внимание, знатоки, вопрос:
Каким образом написать запрос, который выдаст NameSurname ученика и его средний бал с самой лучшей успеваемостью (это должен быть один самый лучший, даже если таких несколько)?


Код: sql
1.
2.
3.
4.
5.
select p.NameSurname
from Pupils p
left join LearningAchievements l on l.pupil_id = p.id
order by AVG(l.mark) desc
limit 1;



блин зобыл...



Код: sql
1.
2.
3.
4.
5.
6.
select p.NameSurname
from Pupils p
left join LearningAchievements l on l.pupil_id = p.id
group by p.id, p.NameSurname
order by AVG(l.mark) desc
limit 1;
...
Рейтинг: 0 / 0
11.11.2013, 19:30:53
    #38460988
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
miksoftMasterZiv,

А left зачем? ученик без отметок явно на отличника не тянет :)

Если у тебя вообще оценок нет, никого не выдаст. А по условию " это должен быть один самый лучший, даже если таких несколько"
...
Рейтинг: 0 / 0
11.11.2013, 20:21:36
    #38461032
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
У меня вышло вывести лучшего ученика, НО!
Когда я добавляю:
SELECT P.NameSurname, L.mark

мне выводит хрень, в виде среднего балла....
Выходит, что у отличника средний балл 7...
...
Рейтинг: 0 / 0
11.11.2013, 20:52:51
    #38461072
Seven_H
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Разобрался. Всем спасибо.
...
Рейтинг: 0 / 0
11.11.2013, 21:21:05
    #38461102
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу оказать помощь в решении запроса.
Seven_HУ меня вышло вывести лучшего ученика, НО!
Когда я добавляю:
SELECT P.NameSurname, L.mark

мне выводит хрень, в виде среднего балла....
Выходит, что у отличника средний балл 7...А кто вам сказал, что это средний балл? это просто одна из оценок этого ученика, не более того.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Прошу оказать помощь в решении запроса. / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]