Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
1 / 1 / 0
Регистрация: 17.11.2018
Сообщений: 48

Найти среднее арифметическое по нескольким полям

21.06.2021, 15:50. Показов 5555. Ответов 8

Студворк — интернет-сервис помощи студентам
Есть следующие таблицы: "Студенты", "Оценки", "Специальности" и "Предметы". Нужно создать запрос, выводящий средний балл по каждому из предметов.
Пробовал что-то наподобие
SQL
1
2
3
4
SELECT dbo.Subjects.SubjectCode, dbo.Subjects.SubjectName, AVG(dbo.Marks.Mark1 + dbo.Marks.Mark2 + dbo.Marks.Mark3) AS 'Average subject score'
FROM dbo.Marks
INNER JOIN dbo.Subjects ON dbo.Marks.SubjectCode1 = dbo.Subjects.SubjectCode AND dbo.Marks.SubjectCode2 = dbo.Subjects.SubjectCode AND dbo.Marks.SubjectCode3 = dbo.Subjects.SubjectCode
GROUP BY dbo.Subjects.SubjectCode, dbo.Subjects.SubjectName
но выдало только три поля, как на пятом рисунке. Делал через представление (views), в Microsoft SQL Server 2019.
Как в данном случае можно найти среднее арифметическое по нескольким полям?
Миниатюры
Найти среднее арифметическое по нескольким полям   Найти среднее арифметическое по нескольким полям   Найти среднее арифметическое по нескольким полям  

Найти среднее арифметическое по нескольким полям   Найти среднее арифметическое по нескольким полям  
Вложения
Тип файла: zip NewStudentsDB_backup_2.zip (419.4 Кб, 3 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.06.2021, 15:50
Ответы с готовыми решениями:

Среднее значение по нескольким полям одной строки
Доброго времени суток! Столкнулся с проблемой: "необходимо вывести сведения о стипендии, выплачиваемой студентам: 1 000 руб. – если средний...

Найти среднее арифметическое квадратов и среднее арифметическое абсолютных значений двух вещественных чисел
Всем здрасте помогите плиз. Дается два вещественных числа. Найти среднее арифметическое их квадратов и среднее арифметическое их абсолютных...

Даны два числа.Найти среднее арифметическое их квадратов и среднее арифметическое их модулей
Даны два числа.Найти среднее арифметическое их квадратов и среднее арифметическое их модулей Добавлено через 2 часа 31 минуту ...

8
5962 / 4538 / 1094
Регистрация: 29.08.2013
Сообщений: 28,148
Записей в блоге: 3
22.06.2021, 00:39
Цитата Сообщение от PC_user1 Посмотреть сообщение
Как в данном случае можно найти среднее арифметическое по нескольким полям?
так же как и по одному - использовать AVG()
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
22.06.2021, 06:40
Цитата Сообщение от PC_user1 Посмотреть сообщение
dbo.Marks.SubjectCode1 = dbo.Subjects.SubjectCode AND dbo.Marks.SubjectCode2 = dbo.Subjects.SubjectCode AND dbo.Marks.SubjectCode3 = dbo.Subjects.SubjectCode
Хорошие экзамены - все три по одному предмету ))
0
1 / 1 / 0
Регистрация: 17.11.2018
Сообщений: 48
22.06.2021, 16:15  [ТС]
Экзамен же может проводиться в разные дни в нескольких группах. У меня в таблице для каждой даты экзамена.- как и для оценки, полученной студентом в этот день,- есть своё поле, и мне нужно каким-то образом выбрать оценки из всех трёх полей для каждого предмета. Тогда должно быть и несколько групп записей - на каждый предмет,- по которому находится средний балл. Но как их тогда правильно "разграничить"? Подскажите, пожалуйста.
0
5962 / 4538 / 1094
Регистрация: 29.08.2013
Сообщений: 28,148
Записей в блоге: 3
22.06.2021, 16:25
Лучший ответ Сообщение было отмечено PC_user1 как решение

Решение

у тебя таблица неправильная
не должно быть нескольких одинаковых колонок типа ExamDate1\2\3 и прочих
при добавлении нового экзамена у тебя придется делать ALTER таблицы, а нужно просто добавлять строку
1
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
22.06.2021, 16:35
Лучший ответ Сообщение было отмечено PC_user1 как решение

Решение

Ага, структура та еще. Но среднее по предметам из неё можно выдернуть, так например попробовать:
SQL
1
2
3
4
5
6
7
SELECT S.SubjectCode,
    AVG(CASE WHEN S.SubjectCode=M.SubjectCode1 THEN M.Mark1
             WHEN S.SubjectCode=M.SubjectCode2 THEN M.Mark2
             ELSE M.Mark3 END) 
  FROM Marks M 
    INNER JOIN Subjects S ON S.SubjectCode IN (M.SubjectCode1,M.SubjectCode2,M.SubjectCode3)
  GROUP BY S.SubjectCode
1
1 / 1 / 0
Регистрация: 17.11.2018
Сообщений: 48
22.06.2021, 16:45  [ТС]
Вот оно как. То есть у меня в таблица должна состоять только из полей "Код студента", "Дата экзамена", "Код предмета" и "Оценка", и тогда у меня записи имеют вид:
1 2021-06-22 78 3
45 2021-06-14 11 4
1 2021-06-26 23 4
............
45 2021-06-17 78 3

А вот структуру таблиц по типу "ДатаЭкзамена1", "ДатаЭкзамена2" и т. д. лучше исключать, или бывают ситуации, когда это допустимо?
0
5962 / 4538 / 1094
Регистрация: 29.08.2013
Сообщений: 28,148
Записей в блоге: 3
22.06.2021, 21:31
Лучший ответ Сообщение было отмечено pincet как решение

Решение

Цитата Сообщение от PC_user1 Посмотреть сообщение
или бывают ситуации, когда это допустимо?
ты ее можешь получить транспонированием таблицы с помощью PIVOT

или выгрузить из базы обычную таблицу, а на клиенте уже вертеть как надо
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
23.06.2021, 09:50
qwertehok,
pivot такое себе решение ибо нужна динамика
а вот на клиенте вертеть - самое то (хоть кастомная логика, хоть какая отчетная система - все умеют разворачивать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2021, 09:50
Помогаю со студенческими работами здесь

Найти среднее арифметическое двух чисел в четвертой степени и среднее арифметическое их квадратов
срочно пожалуйста!!!Даны два числа. Найти среднее арифметическое этих чисел в четвертой степени и среднее арифметическое их квадратов.в с#

Даны два числа.Найти среднее арифметическое их квадратов и среднее арифметическое их модулей
Даны два числа.Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.

Найти среднее арифметическое квадратов двух чисел и среднее арифметическое их модулей
Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.

Найти среднее арифметическое положительных и среднее арифметическое отрицательных элементов массива.
Дан массив вещественных чисел А(А1,А2,…,Аn). Найти среднее арифметическое положительных и среднее арифметическое отрицательных элементов...

Найти среднее арифметическое квадратов и среднее арифметическое модулей двух чисел
Дано 2 числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru