powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / PL/SQL
15 сообщений из 15, страница 1 из 1
PL/SQL
    #39941264
helpsql1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.У меня возникли проблемы с решение данного задания.Ниже я укажу полностью информацию по заданию а так свои попытки решения.
Буду благодарен если укажите на ошибку(и) и поможете разобраться в моих попытках и в задании в целом.

Задание:
Список сотрудников, работающих в лаборатории, в которой работает самый
молодой сотрудник, не имеющий детей. Данные представить в виде таблицы: Табельный
номер, ФИО_сотрудника (фамилия с инициалами), Пол, Дата рождения, Возраст,
Отклонение оклада от среднего по лаборатории, в которой работает сотрудник.

Есть три таблицы которые задействованы в этом задании:
1)
S_ДЕТИ_СОТРУДНИКОВ в которой есть следующие поля:
СЛУЖАЩИЙ_ИД
ФАМИЛИЯ
ИМЯ
ОТЧЕСТВО
ДЕНЬ_РОЖДЕНИЯ
2)
S_ЛАБОРАТОРИИ
ИД
РУКОВОДИТЕЛЬ_ИД
НАИМЕНОВАНИЕ
ДАТА_ОРГАНИЗАЦИИ
ДАТА_ЗАКРЫТИЯ
3)
S_СЛУЖАЩИЕ
ИД
ТАБЕЛЬНЫЙ_НОМЕР
ЛАБОРАТОРИЯ_ИД
СПЕЦИАЛЬНОСТЬ_ИД
ФАМИЛИЯ
ИМЯ
ОТЧЕСТВО
ПОЛ
ДЕНЬ_РОЖДЕНИЯ
СЕМ_ПОЛОЖЕНИЕ
ТЕЛЕФОН
АДРЕС
ХАРАКТЕРИСТИКА
ОКЛАД

Я написал запрос:
SELECT S_СЛУЖАЩИЕ.ТАБЕЛЬНЫЙ_НОМЕР,
CONCAT(CONCAT(CONCAT("ФАМИЛИЯ",' '),CONCAT(SUBSTR("ИМЯ",0,1),'.')),CONCAT(CONCAT(SUBSTR("ОТЧЕСТВО",0,1),'.'),CONCAT(' ',' '))) AS ФИО,
S_СЛУЖАЩИЕ.ПОЛ,
TO_CHAR(S_СЛУЖАЩИЕ.ДЕНЬ_РОЖДЕНИЯ,'dd.mm.yyyy') ДР,
TRUNC((SYSDATE - S_СЛУЖАЩИЕ.ДЕНЬ_РОЖДЕНИЯ)/365) ВОЗРАСТ
FROM S_СЛУЖАЩИЕ,
(SELECT ЛАБОРАТОРИЯ_ИД Л_ИД
FROM (SELECT * FROM "S_СЛУЖАЩИЕ" LEFT JOIN "S_ДЕТИ_СОТРУДНИКОВ" ON "S_СЛУЖАЩИЕ"."ИД" = "S_ДЕТИ_СОТРУДНИКОВ"."СЛУЖАЩИЙ_ИД"
WHERE "S_ДЕТИ_СОТРУДНИКОВ"."СЛУЖАЩИЙ_ИД" IS NULL
ORDER BY S_СЛУЖАЩИЕ.ДЕНЬ_РОЖДЕНИЯ DESC)
WHERE ROWNUM = 1)
WHERE S_СЛУЖАЩИЕ.ЛАБОРАТОРИЯ_ИД = Л_ИД

В этом запросе выводится все по заданию кроме {Отклонение оклада от среднего по лаборатории, в которой работает сотрудник} Как бы я ни пытался у меня не получается.Поэтому решил обратится к вам.
...
Рейтинг: 0 / 0
PL/SQL
    #39941272
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helpsql1999,

Правила форума не рекомендуют бессмысленные темы и несколько топиков по одному вопросу.
...
Рейтинг: 0 / 0
PL/SQL
    #39941273
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helpsql1999
Здравствуйте.У меня возникли проблемы с решение данного задания.Ниже я укажу полностью информацию по заданию а так свои попытки решения.
Буду благодарен если укажите на ошибку(и) и поможете разобраться в моих попытках и в задании в целом.

Задание:
Список сотрудников, работающих в лаборатории, в которой работает самый
молодой сотрудник, не имеющий детей. Данные представить в виде таблицы: Табельный
номер, ФИО_сотрудника (фамилия с инициалами), Пол, Дата рождения, Возраст,
Отклонение оклада от среднего по лаборатории, в которой работает сотрудник.

Есть три таблицы которые задействованы в этом задании:
1) S_ДЕТИ_СОТРУДНИКОВ в которой есть следующие поля:
Код: plsql
1.
2.
3.
4.
5.
СЛУЖАЩИЙ_ИД
ФАМИЛИЯ
ИМЯ
ОТЧЕСТВО
ДЕНЬ_РОЖДЕНИЯ


2) S_ЛАБОРАТОРИИ
Код: plsql
1.
2.
3.
4.
5.
ИД
РУКОВОДИТЕЛЬ_ИД
НАИМЕНОВАНИЕ
ДАТА_ОРГАНИЗАЦИИ
ДАТА_ЗАКРЫТИЯ


3)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
S_СЛУЖАЩИЕ
ИД
ТАБЕЛЬНЫЙ_НОМЕР
ЛАБОРАТОРИЯ_ИД
СПЕЦИАЛЬНОСТЬ_ИД
ФАМИЛИЯ
ИМЯ
ОТЧЕСТВО
ПОЛ
ДЕНЬ_РОЖДЕНИЯ
СЕМ_ПОЛОЖЕНИЕ
ТЕЛЕФОН
АДРЕС
ХАРАКТЕРИСТИКА
ОКЛАД


Я написал запрос:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT S_СЛУЖАЩИЕ.ТАБЕЛЬНЫЙ_НОМЕР,
CONCAT(CONCAT(CONCAT("ФАМИЛИЯ",' '),CONCAT(SUBSTR("ИМЯ",0,1),'.')),CONCAT(CONCAT(SUBSTR("ОТЧЕСТВО",0,1),'.'),CONCAT(' ',' '))) AS ФИО,
S_СЛУЖАЩИЕ.ПОЛ,
TO_CHAR(S_СЛУЖАЩИЕ.ДЕНЬ_РОЖДЕНИЯ,'dd.mm.yyyy') ДР,
TRUNC((SYSDATE - S_СЛУЖАЩИЕ.ДЕНЬ_РОЖДЕНИЯ)/365) ВОЗРАСТ
FROM S_СЛУЖАЩИЕ,
(SELECT ЛАБОРАТОРИЯ_ИД Л_ИД
FROM (SELECT * FROM "S_СЛУЖАЩИЕ" LEFT JOIN "S_ДЕТИ_СОТРУДНИКОВ" ON "S_СЛУЖАЩИЕ"."ИД" = "S_ДЕТИ_СОТРУДНИКОВ"."СЛУЖАЩИЙ_ИД"
WHERE "S_ДЕТИ_СОТРУДНИКОВ"."СЛУЖАЩИЙ_ИД" IS NULL
ORDER BY S_СЛУЖАЩИЕ.ДЕНЬ_РОЖДЕНИЯ DESC)
WHERE ROWNUM = 1)
WHERE S_СЛУЖАЩИЕ.ЛАБОРАТОРИЯ_ИД = Л_ИД



В этом запросе выводится все по заданию кроме {Отклонение оклада от среднего по лаборатории, в которой работает сотрудник} Как бы я ни пытался у меня не получается.Поэтому решил обратится к вам.
1. При оформлении кода используйте тэг SRC данного форума.
2. Не создавайте вторую (дублирующую) тему по одному и тому же вопросу.
3. оформляйте код так, чтобы его было удобно читать.
...
Рейтинг: 0 / 0
PL/SQL
    #39941274
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Язык программирования PL/SQL не имеет к этой задаче никакого отношения.
...
Рейтинг: 0 / 0
PL/SQL
    #39941284
helpsql1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините это первый раз когда я решил попробовать форум в качестве обратной связи и не знаю пока как и что тут,но как SQL задача не относится к языку SQL?
...
Рейтинг: 0 / 0
PL/SQL
    #39941292
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helpsql1999,

select
поля
,oklad- (select avg(oklad) from S_СЛУЖАЩИЕ S2 where S2.ЛАБОРАТОРИЯ_ИД=алиас из основного запроса.ЛАБОРАТОРИЯ_ИД) diff
from
основной запрос

зы
не рассмотрен случай когда несколько самых молодых (близнецы) работают в разных лабораториях

зыы
я б решал задачку с помощью аналит ф-ций

....
stax
...
Рейтинг: 0 / 0
PL/SQL
    #39941293
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
helpsql1999
но как SQL задача не относится к языку SQL?

В Oracle SQL и PL/SQL - это разные вещи
...
Рейтинг: 0 / 0
PL/SQL
    #39941294
helpsql1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое ваше решение очень помогло мне.
...
Рейтинг: 0 / 0
PL/SQL
    #39941297
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

SQL*Plus
1. При оформлении кода используйте тэг SRC данного форума.
...
Рейтинг: 0 / 0
PL/SQL
    #39941308
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus,

так и кода как такового ж и не было

....
stax
...
Рейтинг: 0 / 0
PL/SQL
    #39941337
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
SQL*Plus,

так и кода как такового ж и не было

....
stax
А это тогда что? :-)
Код: plsql
1.
2.
3.
4.
5.
select 
 поля
,oklad- (select avg(oklad) from S_СЛУЖАЩИЕ S2 where S2.ЛАБОРАТОРИЯ_ИД=алиас из основного запроса.ЛАБОРАТОРИЯ_ИД) diff
from
 основной запрос 
...
Рейтинг: 0 / 0
PL/SQL
    #39941344
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
А это тогда что? :-)


схемка/совет/зарисовка/шаблон/намек/...

зы
в дальнейшем буду стараться чаще пользовать
[SRC PLSQL][/SRC]

.....
stax
...
Рейтинг: 0 / 0
PL/SQL
    #39941449
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

И это правильно! :-)
...
Рейтинг: 0 / 0
PL/SQL
    #39941544
Stax
select
поля
,oklad- (select avg(oklad) from S_СЛУЖАЩИЕ S2 where S2.ЛАБОРАТОРИЯ_ИД=алиас из основного запроса.ЛАБОРАТОРИЯ_ИД) diff
from
основной запрос

Может быть, лучше avg(oklad) over(partition by "ЛАБОРАТОРИЯ_ИД") ?
...
Рейтинг: 0 / 0
PL/SQL
    #39941570
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хливкие Шорьки


может

авторзыы
я б решал задачку с помощью аналит ф-ций


.....
stax
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / PL/SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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