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

Запрос к базе данных (студент)

25.11.2013, 14:24. Показов 3153. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте!
Собственно есть база данных,к ней надо написать 3 запроса,2 из которых с легкостью реализовал,но вот один не получается.
Знающие люди,помогите написать запрос к базе.
Сам запрос:
-найти сведения о среднем балле конкретного студента в конкретном семестре (фамилия студента и номер семестра – параметры запроса). Если студент имеет хотя бы одну задолженность, его средний балл должен быть равен 2;
P.s. Задолжности в базе я изначально сделал что может быть только 2 или оценка больше 4.
Вложения
Тип файла: rar scriptall.rar (2.1 Кб, 62 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.11.2013, 14:24
Ответы с готовыми решениями:

Запрос к базе данных
Помогите, пожалуйста, написать запрос. Создана база данных с тремя таблицами внутри. Первая содержит в себе читателей(ид, имя, фамилия),...

Простенький запрос к базе данных
2 таблицы CUSTOMER (Покупатель)  ID (Код)  NAME (Имя) ORDER (Заказ)  ID (Код)  DATEOPER (Дата)  CUSTOMER_ID...

Как правильно составить запрос к базе данных?
Здравствуйте. Нужна помощь в составлении запроса к базе данных. Есть некоторая база данных в ней находятся таблицы. Есть одна...

2
107 / 107 / 5
Регистрация: 28.12.2012
Сообщений: 207
25.11.2013, 15:57
Вариант решения, используя табличное выражение.
В коде есть небольшое описание, если будет не понятно.
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE @FIO NVARCHAR(100) = 'Иван Иван Иванович', @Semestr INT = 1
 
;WITH my_cte (Sredniy_ball, Zadolzhennost)
AS
(
    SELECT  AVG(o.[Оценка]), -- расчет среднего балла
            SUM((CASE WHEN o.[Оценка] = 2 THEN 1 ELSE 0 END)) -- поиск задолженности. 1 - есть задолженность, 0 - нету задолженности
    FROM dbo.Студент s
        INNER JOIN dbo.Отчет o ON o.НомерСтуденческогоБилета = s.НомерСтуденческогоБилета
    WHERE   s.[ФИО] = @FIO
        AND s.[СеместрВнастоящееВремя] = @Semestr
)
SELECT CASE WHEN my_cte.Zadolzhennost > 0 THEN 2 ELSE my_cte.Sredniy_ball END  AS 'Средний балл' FROM my_cte
1
1 / 1 / 0
Регистрация: 17.10.2012
Сообщений: 62
25.11.2013, 16:27  [ТС]
Цитата Сообщение от asd24 Посмотреть сообщение
Вариант решения, используя табличное выражение.
В коде есть небольшое описание, если будет не понятно.
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE @FIO NVARCHAR(100) = 'Иван Иван Иванович', @Semestr INT = 1
 
;WITH my_cte (Sredniy_ball, Zadolzhennost)
AS
(
    SELECT  AVG(o.[Оценка]), -- расчет среднего балла
            SUM((CASE WHEN o.[Оценка] = 2 THEN 1 ELSE 0 END)) -- поиск задолженности. 1 - есть задолженность, 0 - нету задолженности
    FROM dbo.Студент s
        INNER JOIN dbo.Отчет o ON o.НомерСтуденческогоБилета = s.НомерСтуденческогоБилета
    WHERE   s.[ФИО] = @FIO
        AND s.[СеместрВнастоящееВремя] = @Semestr
)
SELECT CASE WHEN my_cte.Zadolzhennost > 0 THEN 2 ELSE my_cte.Sredniy_ball END  AS 'Средний балл' FROM my_cte
Большое спасибо,ваш вариант хорош,но преподаватель принял и мой
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT     Студент.ФИО, Отчет.НазваниеПредмета, SUM(Отчет.Оценка)/COUNT(Отчет.Оценка) AS Среднее
FROM         Студент INNER JOIN
                      Отчет ON Студент.НомерСтуденческогоБилета = Отчет.НомерСтуденческогоБилета
GROUP BY Отчет.НазваниеПредмета, Студент.ФИО, Студент.СеместрВнастоящееВремя
HAVING      (Студент.ФИО = N'Двужилова Екатерина Генадиевна') AND (Студент.СеместрВнастоящееВремя = 3)
INTERSECT
SELECT     Студент.ФИО, Отчет.НазваниеПредмета,Отчет.Оценка
FROM         Студент INNER JOIN
                      Отчет ON Студент.НомерСтуденческогоБилета = Отчет.НомерСтуденческогоБилета
                      WHERE Отчет.Оценка >=4
                      
SELECT     Студент.ФИО, Отчет.НазваниеПредмета, Отчет.Оценка
FROM         Студент INNER JOIN
                      Отчет ON Студент.НомерСтуденческогоБилета = Отчет.НомерСтуденческогоБилета
                    WHERE  (Студент.ФИО = N'Двужилова Екатерина Генадиевна') AND (Студент.СеместрВнастоящееВремя = 3) AND (Отчет.Оценка=2)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2013, 16:27
Помогаю со студенческими работами здесь

Запрос к базе данных о пользователе
Допустим id равен 12345.Мне нужно вытащить переменную boss у этого id. и записать в переменную q.Как можно оформить такой запрос в базе...

Запрос к базе
Народ привет! Помогите пожалуйста, есть база в денвере, там хранятся вопросы по математике с формулами, вот когда с базы вытаскиваю...

Хранение данных пользователя(инф-ию,ограничений,разрешений) в Базе Данных, нужен совет
Здравствуйте, подскажите пожалуйста в какой форме лучше хранить в БД информацию о пользователях, их ограничения и разрешения на...

Удалить дубли в базе, медленный запрос
Добрый день, Подскажите как можно или оптимизировать или переписать запрос по друому? суть в том что есть 4 таблицы в базе, где каждый...

Запрос к бд у которой нет элементов в другой базе
Может не совсем корректно написал тему..Не знал что писать Есть три таблицы Универ->Факультет->Студент нужно чтобы выводилась ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru