Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для 15 символов огр
4 / 4 / 3
Регистрация: 12.08.2017
Сообщений: 35

Выполнение двух SQL-запросов

23.04.2019, 17:20. Показов 2141. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброго времени, суток. Нужно выполнить два запроса.
Исходные данные:
База данных Частная клиника
Врачи частной клиники ведут приём пациентов по определенному расписанию. В результате приёма ставится диагноз.
Таблицы:
- Врачи (Код врача, ФИО, специализация)
- Пациенты (Код пациента, ФИО, адрес)
- Диагнозы (Код диагноза, название, лечение)
- Приёмы (Код приёма, код врача, код пациента, дата, время, код диагноза)
ЗАДАНИЕ:
1. Определить пациентов, побывавших у врача более одного раза;
2. Определить относительную загрузку врачей по специализациям.

Так и не получилось написать работающие SQL-запросы для этих заданий.

Вот сразу код создания таблиц и их наполнения, чтобы было проще.

SQL
1
2
3
4
CREATE TABLE Vrachi (id INT, FIO VARCHAR(50), Spec VARCHAR(50))
CREATE TABLE Pacienti (id INT, FIO VARCHAR(50), Adress VARCHAR(50))
CREATE TABLE Diagnosi (id INT, name VARCHAR(50), Lechenie VARCHAR(50))
CREATE TABLE Priemi (id INT, code_vracha INT, code_pacienta INT, code_diagnosa INT, _date DATE, _time TIME)
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
INSERT INTO Vrachi (id, FIO, spec) VALUES (1, 'Врач 1', 'Специализация 1')
INSERT INTO Vrachi (id, FIO, spec) VALUES (2, 'Врач 2', 'Специализация 2')
INSERT INTO Vrachi (id, FIO, spec) VALUES (3, 'Врач 3', 'Специализация 3')
 
INSERT INTO Pacienti (id, FIO, adress) VALUES (1, 'Гномин Роман Гудинивич', 'Адрес 1')
INSERT INTO Pacienti (id, FIO, adress) VALUES (2, 'Клязьма Имануил Эдуардович', 'Адрес 2')
INSERT INTO Pacienti (id, FIO, adress) VALUES (3, 'Мужик Алексей Алексеевич', 'Адрес 3')
 
INSERT INTO Diagnosi (id, name, Lechenie) VALUES (1, 'Рак', 'Приложите подорожник')
INSERT INTO Diagnosi (id, name, Lechenie) VALUES (2, 'Отсутствие чувства юмора', 'Не заходите в интернет')
INSERT INTO Diagnosi (id, name, Lechenie) VALUES (3, 'Не программист', 'Неисправимый случай')
 
INSERT INTO Priemi (id, code_vracha, code_pacienta, code_diagnosa, _date, _time) VALUES
(1, 2, 1, 3, '2019-01-15', '13:07:05')
INSERT INTO Priemi (id, code_vracha, code_pacienta, code_diagnosa, _date, _time) VALUES
(2, 3, 2, 1, '2019-03-01', '12:10:15')
INSERT INTO Priemi (id, code_vracha, code_pacienta, code_diagnosa, _date, _time) VALUES
(3, 1, 3, 2, '2019-02-23', '09:20:00')
INSERT INTO Priemi (id, code_vracha, code_pacienta, code_diagnosa, _date, _time) VALUES
(4, 1, 1, 2, '2019-01-14', '10:50:00')
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2019, 17:20
Ответы с готовыми решениями:

Как ускорить выполнение запросов в MS SQL?
Добрый день ! задавал вопрос в теме по C#. Но в общем проблема такая - как ускорить выполнение запросов в MS SQL ? у меня...

Вычитание двух запросов MS SQL
Здравствуйте! Помогите решить проблему. Не получается правильно составить запрос, который высчитывал разницу двух запросов. Для того,...

Как можно получить код SQL-запросов из лога транзакций ldf MS SQL Server2k?
Хая! Это вообще возможно??

3
5967 / 4543 / 1094
Регистрация: 29.08.2013
Сообщений: 28,159
Записей в блоге: 3
23.04.2019, 21:28
Цитата Сообщение от 15 символов огр Посмотреть сообщение
1. Определить пациентов, побывавших у врача более одного раза;
T-SQL
1
2
3
4
select count(code_vracha), code_pacienta
from priemi
group by code_pacienta
having count(code_vracha)>1
ну а из кода пациента получить ФИО легко

Цитата Сообщение от 15 символов огр Посмотреть сообщение
2. Определить относительную загрузку врачей по специализациям.
что значит "относительная нагрузка"?

Добавлено через 2 минуты
PS когда смотрю на ваши таблицы хочется плакать. назвали вы бы их нормально.
1
 Аватар для 15 символов огр
4 / 4 / 3
Регистрация: 12.08.2017
Сообщений: 35
23.04.2019, 22:40  [ТС]
> что значит "относительная нагрузка"?
Тоже не понял данную формулировку, но предполагаю, что нужно вывести специализации и сколько приходится пациентов на врачей данной специализации в процентном соотношении, то есть от общего количества пациентов нужно вычислить сколько процентов приходится на данную специализацию.
Касательно названий таблиц и атрибутов, то писал это все в спешке транслитом, чтобы не париться

З.ы. не могу использовать цитирование, потому что пишу с телефона
Попробую всё-таки:
Цитата Сообщение от qwertehok Посмотреть сообщение
что значит “относительная нагрузка"?
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
26.04.2019, 09:37
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
select
 v.spec, count(*) * 100. / sum(count(*)) over ()
from
 priemi p join
 vrachi v on v.id = p.code_vracha
group by
 v.spec;
 
select
 v.spec, count(*) * 100. / t.total
from
 priemi p join
 vrachi v on v.id = p.code_vracha cross join
 (select count(*) from priemi) t(total)
group by
 v.spec, t.total;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2019, 09:37
Помогаю со студенческими работами здесь

Медленное выполнение запросов
Имеется следующая ситуация: VB-приложение обращается через DAO к БД Access на сетевом диске. Проблема: в новелловской сети с новелловскими...

Объединение sql запросов
Всем привет. У меня есть 2 таблицы (Expences, Profit) такого формата: Expences ID Date1 Summa Profit

Создание sql-запросов
Доброго времени суток. Есть таблица производителей MF_ID, MF_NAME

Язык запросов SQL
Кто поможет разобраться: как сделать вот это то есть реализовать 1. Язык запросов SQL: Создание БД и Таблиц. Примеры 2. Язык запросов...

Создание запросов в MS SQL
Всем Привет. Помогите, пож-та усовершенствовать запрос. (исключить повторения.) есть таблица Taksit CREATE TABLE ( INT ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru