|
Тестовое задание на PL/SQL
|
|||
---|---|---|---|
#18+
Здравствуйте. Дали тестовое задание на PL/SQl. Есть вопросы и моменты, которые я не могу понять. Проверить свой код, мне негде. Дана База данных(приложенный файл) https://ibb.co/xqr6QYp Задания такие Начальный уровень 1. Даты регистрации Вывести количество контрактов, зарегистрированных в системе за каждый день с 01.01.18 по 01.09.18. Тут у меня можеть быть проблема с датами в PL/SQL Код: plsql 1. 2. 3. 4.
2. Суммарный счёт Вывести сумму всех счетов по контракту с кодом 478192, выставленных в мае 2018 года. Тоже проблема с датами может быть Код: plsql 1. 2. 3.
3. Совпадение? Вывести те контракты, для которых номер контракта начинается с кода этого же контракта. Учесть, что V_EXT_IDENT является текстовым полем. Тут я не знаю, как грамотно переводить один формат в другой, и как написать запрос на сравнение Код: plsql 1. 2. 3.
4. Отчёт по статусам Вывести количество контрактов для каждого значения статуса контракта из списка: A - активен, B - заблокирован, C - расторгнут. Результат: статус, «словесное» наименование статуса, количество контрактов. Я правильно понимаю, что бы вывести словесное наименование статуса, нам нужно создать новую таблицу? Код: plsql 1. 2. 3.
Продвинутый уровень 1. «Пустые» филиалы Вывести наименования филиалов, в которых нет ни одного активного контракта. Тут я просто вычитаю из всех контрактов активные контракты, возможно все можно сделать гораздо проще. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
2. Наиболее популярные ТП Вывести наименования тарифных планов для топ-5 самых популярных услуг. Результат: наименование тарифного плана, количество услуг с таким тарифным планом. SELECT V_NAME, C FROM( SELECT ID_SERVICE, V_NAME,COUNT(ID_SERVICE) AS C FROM SERVICES, TARIFF_PLAN WHERE ID_TARIFF_PLAN.SERVICES = ID_TARIFF_PLAN.TARIFF_PLAN GROUP BY ID_SERVICE ORDER BY C DESC) WHERE ROWNUM <=5 3. Уникальные услуги в рамках филиалов Вывести наименования услуг, которые являются уникальными в рамках филиалов, т.е. таких услуг, которые есть только в конкретном филиале и ни в каком другом. Результат: наименование услуги, код филиала. Тут я смог соеденить только код филиала, и код услуги. Дальше не могу сообразить. Код: plsql 1. 2. 3.
4. Ошибка при выставлении счетов Оператор Андрей поторопился и выставил счета по контрактам, у которых сумма всех ранее выставленных счетов > 30 000 рублей, на несколько дней раньше положенного срока. Напишите запрос, который выведет коды счетов, ошибочно выставленных в текущем месяце Андреем, зная, что код пользователя Андрея = 2021. Следует учесть, что в текущем месяце все счета, выставленные Андреем, ошибочные. Тут у меня вообще нет идей, как что то сделать. 5. Рекомендательная система Дмитрий занимается разработкой рекомендательных систем, и ему нужно знать контракты, у которых количество услуг на начало каждого месяца только уменьшалось в течение последних 6 месяцев. Помогите написать запрос, который выводит номера таких контрактов. Тут тоже нет идей. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2020, 14:11 |
|
Тестовое задание на PL/SQL
|
|||
---|---|---|---|
#18+
Kamino Проверить свой код, мне негде. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2020, 16:28 |
|
Тестовое задание на PL/SQL
|
|||
---|---|---|---|
#18+
Тестовое задание по сути своей должно позволить определить степень владения предметом. Потому ответов не будет. Тем не менее: Kamino Тут у меня можеть быть проблема с датами в PL/SQL Код: plsql 1. 2. 3. 4.
1. По возможности стоит избегать "двузначных" значений года. Если это по каким-то (непонятным пока) причинам невозможно - ознакомьтесь внимательно с масками 'YY' и 'RR' Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
2. GROUP BY DT_REG - тут следует иметь ввиду, что тип date в oracle включает компоненту времени. Т.е. фактически группировать Вы будете по секундам, хотя и не увидите проблемы, если даты сохранены до суток. Честным решением данной задачи будет группировка по TRUNC(DT_REG,'DD') Kamino Тоже проблема с датами может быть Код: plsql 1.
Точно есть. Прочитайте описание на to_date. Прочитайте про оператор between. Kamino Тут я не знаю, как грамотно переводить один формат в другой, и как написать запрос на сравнение Код: plsql 1. 2. 3.
Ознакомьтесь с to_char и форматами для чисел. Ознакомьтесь с операцией конкатенации "||" Ознакомьтесь с синтаксисом оператора like и спец. символами '_', '%'. Kamino 4. Отчёт по статусам Вывести количество контрактов для каждого значения статуса контракта из списка: A - активен, B - заблокирован, C - расторгнут. Результат: статус, «словесное» наименование статуса, количество контрактов. Я правильно понимаю, что бы вывести словесное наименование статуса, нам нужно создать новую таблицу? Не обязательно. Ознакомьтесь с CASE expression и DECODE - задача решается обоими способами. Kamino Продвинутый уровень 1. «Пустые» филиалы Вывести наименования филиалов, в которых нет ни одного активного контракта. Тут поможет конструкция NOT EXISTS Kamino 2. Наиболее популярные ТП Вывести наименования тарифных планов для топ-5 самых популярных услуг. Метод с динамическим представлением и rownum на современных версиях может быть заменен конструкцией ORDER BY Fetch First <N> Rows Only Кроме того, убедитесь, что services - это именно использование услуг клиентами, а не справочник услуг тарифного плана. Kamino 3. Уникальные услуги в рамках филиалов Тут я смог соеденить только код филиала, и код услуги. Дальше не могу сообразить. Предполагается конструкция Group by.. HAVING Kamino 4. Ошибка при выставлении счетов Тут у меня вообще нет идей, как что то сделать. 5. Рекомендательная система Тут тоже нет идей. Это оценка умений, а не просто "головоломка". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:52 |
|
Тестовое задание на PL/SQL
|
|||
---|---|---|---|
#18+
andrey_anonymous Kamino Код: plsql 1.
Если это по каким-то (непонятным пока) причинам невозможно - ознакомьтесь внимательно с масками 'YY' и 'RR'А более правильный совет: 5916562 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2020, 13:58 |
|
Тестовое задание на PL/SQL
|
|||
---|---|---|---|
#18+
Интересно, эти задания какому уровню pl/sql разработчика соответствуют? Jinor или ближе к middle? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2020, 18:20 |
|
Тестовое задание на PL/SQL
|
|||
---|---|---|---|
#18+
sygo88 Интересно, эти задания какому уровню pl/sql разработчика соответствуют? Jinor или ближе к middle? Юниор из юниоров имхо. Тут вообще pl/sql нет. Только sql причем базовый. Никаких хитростей и тонкостей. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2020, 23:47 |
|
Тестовое задание на PL/SQL
|
|||
---|---|---|---|
#18+
legg Никаких хитростей и тонкостей. №5? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.06.2020, 23:56 |
|
Тестовое задание на PL/SQL
|
|||
---|---|---|---|
#18+
andrey_anonymous legg Никаких хитростей и тонкостей. №5? можно решать формально, а можно "рекомендательно" ноюнсы точно появятся напр включать текущий месяц в "последние 6 месяцев", или нет. учитывать влияние карантина, к-во дней в месяце и тд ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 09:09 |
|
|
start [/forum/topic.php?fid=52&fpage=43&tid=1881141]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 305ms |
total: | 429ms |
0 / 0 |