Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 29.09.2020
Сообщений: 17

Сложные запросы базы данных

27.10.2020, 18:40. Показов 4394. Ответов 27

Студворк — интернет-сервис помощи студентам
Привет! нужно найти разницу между количеством студентов в которых nomer_ses = 1 и nomer_ses = 2
От таблица
nomer_ses mark subject_id graduate_id
1 7 3 3
2 10 2 2
2 11 3 2
2 12 2 3
4 12 2 4
4 9 3 4
1 9 3 1
1 5 2 1
я пробовал и понял как сделать отдельно обрахунок сколько всего nomer_ses =1 и nomer_ses = 2 , ето делаеться так
SELECT COUNT(nomer_ses) FROM exam Where(nomer_ses=1);
но как мне сделать в одном запросе разницу между ними, я пробовал так
SELECT SUM( COUNT(nomer_ses) select Where(nomer_ses=1)- COUNT(e.mark) select where nomer_ses=2) from exam; но видает ошибку, подскажите пожалуйста
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.10.2020, 18:40
Ответы с готовыми решениями:

Создание базы данных, открытие из под одной базы данных MS Access
Здравствуйте. В общем, C# начал заниматься только вот и сразу была поставлена задача создать базу данных. Идея есть, при открытие программы...

Как обеспечить зависимость значений для ввода в поле базы данных от значения в другом поле базы данных?
В таблицу DicFactor вводятся факторы, а в связанную с ней таблицу FactorValue вводятся допустимые значения факторов. Например, для фактора...

Сложные выборки из базы данных
Здравствуйте. Я умею делать простые выборки, но сложные пока не получаются. Недостаток опыта и знаний. Извините, если напишу много. ...

27
0 / 0 / 0
Регистрация: 29.09.2020
Сообщений: 17
30.10.2020, 12:48  [ТС]
Студворк — интернет-сервис помощи студентам
MsGuns, спасибо!) я только начал изучать БД , поетому сложно еще такие запросы писать) но буду учиться , там еще один запрос остался , я попробую сам , но если не вийдет надеюсь еще з с ним поможете)
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,914
31.10.2020, 12:36
Цитата Сообщение от MsGuns Посмотреть сообщение
Нельзя из внешнего запроса обращаться к вложенному (g).
One does not simply access to derived query results
0
0 / 0 / 0
Регистрация: 29.09.2020
Сообщений: 17
31.10.2020, 15:54  [ТС]
MsGuns, привет, так и не получилось сделать нормально запрос, хотя я уже близко, но не могу понять что нужно исправить) помогите с етим пожалуйста
мне нужно найти разницу между количеством nomer_ses для каждого предмета
тоесть имея такую таблицу
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
prob=# SELECT * FROM exam;
 nomer_ses | mark | subject_id | graduate_id
-----------+------+------------+-------------
         1 |    7 |          3 |           3
         2 |   10 |          2 |           2
         2 |   11 |          3 |           2
         2 |   12 |          2 |           3
         4 |   12 |          2 |           4
         4 |    9 |          3 |           4
         1 |    9 |          3 |           1
         1 |    5 |          2 |           1
         2 |    1 |          1 |           2
         2 |    7 |          4 |           2
мне нужно чтоб к примеру если subject_id = 1 то мы считаем для него nomer_ses=1 и nomer_ses=2 и делаем их разницу, тоесть если subject_id = 1 , то результат должен быть 1 , а к примеру для subject_id = 2 должен быть 2-1=1

я пробовал сделать так
SQL
1
2
3
4
 SELECT s.name , SUM((SELECT COUNT(nomer_ses) FROM exam  WHERE nomer_ses=2)-(SELECT COUNT(nomer_ses) FROM exam WHERE nomer_ses=1)) OVER(PARTITION BY nomer_ses) AS rizn
FROM subject s
LEFT JOIN exam e ON s.id=e.subject_id
GROUP BY s.name,e.nomer_ses;
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
31.10.2020, 19:33
Цитата Сообщение от kostjaa11 Посмотреть сообщение
нужно найти разницу между количеством nomer_ses для каждого предмета
Цитата Сообщение от kostjaa11 Посмотреть сообщение
к примеру для subject_id = 2
для этого предмета 4 значения nomer_ses - 2, 2, 4, 1! Как это у вас получилось?
должен быть 2-1=1
как вообще можно найти разницу между 4 числами?

Добавлено через 3 минуты
И да, для разницы важна последовательность операндов, у вас про это тоже ничего не сказано
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
31.10.2020, 22:07
kostjaa11,
Вы пытаетесь сделать сложное просто, а получается еще сложнее. Зачем ?
Ведь можно все разбить на шаги и выполнить их последовательно. На каждом шаге - одно простое действие.
В результате получится непростой алгоритм, реализуемый простыми шагами.

Как реализовать ? Вам уже подсказывали - хранимой процедурой.

Разбираться в Ваших дальнейших усложнениях задачи (сначала было просто 3 макс. оценки, потом их сумма, теперь - разницы сумм, дальше что,- экспоненты и интегралы пойдут ?), нет никакого желания. Тем более писать еще и какую-то реализацию.

Ужто извините

Добавлено через 3 минуты
Цитата Сообщение от MsGuns Посмотреть сообщение
хранимой процедурой.
Есть, однако, и альтернатива.
Такой же многошаговый алгоритм, только результаты получаете и обрабатываете на "клиенте", т.е. в Вашем приложении.
Это на тот случай, если против хранимок у Вас иммунитет
0
0 / 0 / 0
Регистрация: 29.09.2020
Сообщений: 17
01.11.2020, 12:35  [ТС]
MsGuns, понял спасибо)

Добавлено через 3 минуты
Рядовой, nomer_ses=2 и nomer_ses=1 поетому ми не считаем когда nomer_ses=4 , только когда nomer_ses=2 и nomer_ses=1 , и когда nomer_ses=2 , то в нас значение будет 1, когда найдем еще nomer_ses=2 то будет 2, а так как nomer_ses=1 есть только одна строчка , то результат =2-1=1
0
 Аватар для Рядовой
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
01.11.2020, 12:46
kostjaa11, ничего не понял.
0
0 / 0 / 0
Регистрация: 29.09.2020
Сообщений: 17
01.11.2020, 12:58  [ТС]
Рядовой, ну у нас задача для независимого оценивания, и идея это найти разницу между тем сколько людей писало экзамены в первой сессии и второй сессии

Добавлено через 1 минуту
Рядовой, и у БД nomer_ses=2 значит ,что студент писал екзамен у 2 сесии, теперь понятна задача?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.11.2020, 12:58

Добавление базы данных и запросы в эту базу данных
Подскажите пожалуйста. При помощи каких компонентов в delphi можно добавить базу данных acces и какой код и как создать запросы в эту базу...

Запросы базы данных
Разработайте параметрический запрос. Создайте запрос на выборку с одним параметром. Создайте запрос на выборку с двумя параметрами. ...

Запросы Базы данных
Доброго времени суток, помоги пожалуйста написать ВЛОЖЕННЫЕ запросы Справочники для цеха питания: справочник готовой продукции...

Запросы из базы данных
Железнодорожные туры. Обязательная информация: 1. Пункт назначения 2. Цена 3. Время пути 4. Количество приобретенных туров 5....

Сложные запросы
Есть 4 таблицы: блюдо (код блюда, название блюда) продукты (код продукта, название продукта, производитель продукта) содержание...


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru