Здравствуйте, друзья!
Очень приятно Ваше активное участие в решении присланной задачи! Все Ваши работы проверил и отметил лайком 👍 те, которые счёл правильными. Из 11 присланных работ 9 будут правильно выдавать номера заказов с некорректной нумерацией коробок и 2 работы было бы здорово немного доработать.
Ещё раз спасибо за активное участие и хороших выходных!🙂💪
Очень приятно Ваше активное участие в решении присланной задачи! Все Ваши работы проверил и отметил лайком 👍 те, которые счёл правильными. Из 11 присланных работ 9 будут правильно выдавать номера заказов с некорректной нумерацией коробок и 2 работы было бы здорово немного доработать.
Ещё раз спасибо за активное участие и хороших выходных!🙂💪
🤝3👍1
Добрый день, друзья!
Все знаем, что с опытом не только начинаешь меньше делать ошибок при написании SQL-запросов, но и приобретаешь навык быстро находить ошибки в чужом SQL-коде. Следующих несколько задач предлагаю посвятить поиску ошибок в запросах, написанных другими специалистами.
Задача первая:
В базе данных есть таблица FILIALS, имеющая столбцы FILIAL_ID и FILIAL_NAME, и имеющая три записи.
Также есть таблица менеджеров MANAGERS, в которой есть внешний ключ - столбец FILIAL_ID, ссылающийся на таблицу филиалов.
Известно, что в таблице филиалов точно есть один филиал, для которого нет ни одного менеджера в таблице MANAGERS. Филиал новый и туда не успели ещё найти сотрудников, но запись в таблице уже есть.
Написанный запрос ниже должен показывать список филиалов, в которых есть хотя бы один сотрудник. Почему запрос показывает все три филиала, хотя должен показывать два?
Все знаем, что с опытом не только начинаешь меньше делать ошибок при написании SQL-запросов, но и приобретаешь навык быстро находить ошибки в чужом SQL-коде. Следующих несколько задач предлагаю посвятить поиску ошибок в запросах, написанных другими специалистами.
Задача первая:
В базе данных есть таблица FILIALS, имеющая столбцы FILIAL_ID и FILIAL_NAME, и имеющая три записи.
Также есть таблица менеджеров MANAGERS, в которой есть внешний ключ - столбец FILIAL_ID, ссылающийся на таблицу филиалов.
Известно, что в таблице филиалов точно есть один филиал, для которого нет ни одного менеджера в таблице MANAGERS. Филиал новый и туда не успели ещё найти сотрудников, но запись в таблице уже есть.
Написанный запрос ниже должен показывать список филиалов, в которых есть хотя бы один сотрудник. Почему запрос показывает все три филиала, хотя должен показывать два?
SELECT *
FROM FILIALS F
WHERE EXISTS (SELECT * FROM MANAGERS M WHERE M.FILIAL_ID = FILIAL_ID)
FROM FILIALS F
WHERE EXISTS (SELECT * FROM MANAGERS M WHERE M.FILIAL_ID = FILIAL_ID)
Anonymous Quiz
12%
Потому, что заместо EXISTS нужно поставить NOT EXISTS
5%
Потому, что в основном запросе после слова SELECT указан символ звёздочка
13%
Потому что в подзапросе указан символ звёздочка
56%
Потому, что в подзапросе в блоке WHERE допущена ошибка
15%
Потому, что EXISTS нужно заменить на IN
Всем доброй пятницы и хороших выходных!
Давайте разбирать какой из ответов в предыдущей задаче был правильный!
Вначале, конечно, должен сообщить, что для решения задачи требовалось знание подзапросов. Если Вы ещё не знакомы с этой темой, то лучше вначале изучить её и затем снова вернуться к этой задаче.
Итак, нам нужно было вывести филиалы, в которых есть хотя бы один менеджер. Поэтому для каждого филиала подзапоосом и проверяется наличие (существование) менеджера с его FILIAL_ID. Проблема в том, что подзапрос не связан с внешним запросом. Была допущена ошибка, которую часто совершают начинающие SQL-специалисты. Тут я подробнее об этом написал: https://dzen.ru/a/YrdWwBahoEyqTK_S
Когда Вы разберёте эту ошибку, то с большей вероятностью не допустите её при написании SQL кода! Учимся на чужих ошибках!
Будьте как SQL-антивирус:) Находите баги и в чужих SQL-запросах.
Давайте разбирать какой из ответов в предыдущей задаче был правильный!
Вначале, конечно, должен сообщить, что для решения задачи требовалось знание подзапросов. Если Вы ещё не знакомы с этой темой, то лучше вначале изучить её и затем снова вернуться к этой задаче.
Итак, нам нужно было вывести филиалы, в которых есть хотя бы один менеджер. Поэтому для каждого филиала подзапоосом и проверяется наличие (существование) менеджера с его FILIAL_ID. Проблема в том, что подзапрос не связан с внешним запросом. Была допущена ошибка, которую часто совершают начинающие SQL-специалисты. Тут я подробнее об этом написал: https://dzen.ru/a/YrdWwBahoEyqTK_S
Когда Вы разберёте эту ошибку, то с большей вероятностью не допустите её при написании SQL кода! Учимся на чужих ошибках!
Будьте как SQL-антивирус:) Находите баги и в чужих SQL-запросах.
👍6
Здравствуйте, друзья!
Продолжаем разбирать ошибки SQL. Следующий запрос даст ошибку. Почему? SELECT OLD_PRICE - NEW_PRICE AS DIFF FROM GOODS WHERE DIFF >= 100
Продолжаем разбирать ошибки SQL. Следующий запрос даст ошибку. Почему? SELECT OLD_PRICE - NEW_PRICE AS DIFF FROM GOODS WHERE DIFF >= 100
Anonymous Quiz
8%
Значение NEW_PRICE может быть больше, чем значение OLD_PRICE и его нельзя вычитать.
5%
В блоке SELECT отсутствует символ звёздочка.
11%
В блоке SELECT нельзя использовать алиас DIFF.
72%
В блоке WHERE нельзя использовать алиас DIFF.
4%
Использование символов ">=" недопустимо в SQL запросах.
Всем доброго понедельника!
В следующей задаче предположите, пожалуйста, есть ли ошибка в SQL-запросе. Приводимый ниже запрос должен показывать товары из таблицы GOODS, срок годности которых истекает сегодня.
Поле EXPIRE_DATE таблицы GOODS имеет тип DATE и хранит в себе дату срока годности (без времени).
В следующей задаче предположите, пожалуйста, есть ли ошибка в SQL-запросе. Приводимый ниже запрос должен показывать товары из таблицы GOODS, срок годности которых истекает сегодня.
Поле EXPIRE_DATE таблицы GOODS имеет тип DATE и хранит в себе дату срока годности (без времени).
SELECT *
FROM GOODS
WHERE EXPIRE_DATE = TO_DATE(SYSDATE, 'dd.mm.yyyy')
FROM GOODS
WHERE EXPIRE_DATE = TO_DATE(SYSDATE, 'dd.mm.yyyy')
Anonymous Quiz
18%
Да, ошибка есть. Выполнение этого запроса всегда будет приводить к SQL-ошибке.
35%
Да,ошибка есть. Запрос в некоторых случаях может выдавать неправильные данные или приводить к ошибке
48%
Нет, ошибки в этом запросе нет.
Спасибо за активное участие в поиске возможной ошибки! Как вы уже поняли, она всё же есть. И ошибки такого вида, к сожалению, иногда допускают и действующие SQL-специалисты. Проблема заключается в том, что для выполнения этого запроса, Ораклу придётся выполнить неявное преобразование.
Функция SYSDATE возвращает дату (со временем), функция to_date служит, чтобы ИЗ ТЕКСТА, согласно указанной маске, получать дату. Но ведь SYSDATE итак дата (хоть и со временем), а не текст! Значит, чтобы функция to_date отработала, значение SYSDATE должно быть вначале преобразовано в текст из даты (чтобы to_date сделала из текста опять дату).
Терерь не запутаться🙂:
вот из текста в дату to_date преобразовывает по маске 'dd.mm.yyyy', а дата в текст в нашем примере преобазовывается Ораклом неявно и без маски.
Подробнее как раз этот случай и способ его решения описал здесь:
https://dzen.ru/a/Y1qCKnSWlzaLrq1C
Посмотрите, пожалуйста, этот мой небольшой пост!😌
Ошибки неявного преобразования тем и опасны, что один и тот же SQL-код у кого-то правильно работает, а у другого - может возвращать неверные данные и даже на основе них могут приниматься важные решения! Хорошо ещё если выскочит SQL-ошибка, благодаря чему можно будет найти проблему неявного преобразования. Хуже, если они такие ошибки остаются незамеченным.
ORACLE принимает решения как по-умолчанию представлять дату (если не указан формат преобразования), опираясь на NLS параметры, которые определяются при создании подключения к базе данных. И из-за этого автоматическое и без ведома преобразование даты может делаться по-разному. Преобразование даты в текст или текста в дату должно делаться всегда согласно указываемому формату. И никогда неявно.
В среду будем разбирать ещё один SQL-код! 😀
Функция SYSDATE возвращает дату (со временем), функция to_date служит, чтобы ИЗ ТЕКСТА, согласно указанной маске, получать дату. Но ведь SYSDATE итак дата (хоть и со временем), а не текст! Значит, чтобы функция to_date отработала, значение SYSDATE должно быть вначале преобразовано в текст из даты (чтобы to_date сделала из текста опять дату).
Терерь не запутаться🙂:
вот из текста в дату to_date преобразовывает по маске 'dd.mm.yyyy', а дата в текст в нашем примере преобазовывается Ораклом неявно и без маски.
Подробнее как раз этот случай и способ его решения описал здесь:
https://dzen.ru/a/Y1qCKnSWlzaLrq1C
Посмотрите, пожалуйста, этот мой небольшой пост!😌
Ошибки неявного преобразования тем и опасны, что один и тот же SQL-код у кого-то правильно работает, а у другого - может возвращать неверные данные и даже на основе них могут приниматься важные решения! Хорошо ещё если выскочит SQL-ошибка, благодаря чему можно будет найти проблему неявного преобразования. Хуже, если они такие ошибки остаются незамеченным.
ORACLE принимает решения как по-умолчанию представлять дату (если не указан формат преобразования), опираясь на NLS параметры, которые определяются при создании подключения к базе данных. И из-за этого автоматическое и без ведома преобразование даты может делаться по-разному. Преобразование даты в текст или текста в дату должно делаться всегда согласно указываемому формату. И никогда неявно.
В среду будем разбирать ещё один SQL-код! 😀
👍9
Здравствуйте, друзья!
Есть запрос, который должен выводить список товаров, их цену и 18%-ное значение от стоимости. Есть ли ошибка в этом запросе? SELECT t.GOOD_NAME, t.PRICE, t.PRICE * 0,18 AS NDS FROM GOODS t
Есть запрос, который должен выводить список товаров, их цену и 18%-ное значение от стоимости. Есть ли ошибка в этом запросе? SELECT t.GOOD_NAME, t.PRICE, t.PRICE * 0,18 AS NDS FROM GOODS t
Anonymous Quiz
19%
Да, ошибка есть! Запрос не сможет выполниться. Будет SQL-ошибка.
28%
Да, ошибка есть, но запрос выполнится. Данные вернутся не в соответствии с теми, что ожидали.
53%
Нет, ошибки нет. Запрос выполнится без ошибок и вернёт данные в соответствии с поставленной задачей.
Друзья, поздравляем всех с праздником, с первым сентября!
Успехов в постижении новых нужных знаний и совершенствовании умений!
Поздравления не только для школьников и студентов, но и для нас! Мы тоже учимся! И это правильный путь!
Успехов в постижении новых нужных знаний и совершенствовании умений!
Поздравления не только для школьников и студентов, но и для нас! Мы тоже учимся! И это правильный путь!
🔥12👍3
Всем хорошего понедельника!
Пока едете на работу (если Вы не за рулём) предлагаю решить ещё одну задачу на поиск ошибки в SQL-запросе.
Запрос ниже должен вывести список клиентов (без дублирующихся строчек), которым ни разу не выставляли счёт.
SELECT c.CLIENT_ID,
c.CLIENT_NAME,
c.CLIENT_INN
FROM CLIENTS c
LEFT JOIN INVOICES i
ON c.CLIENT_ID = i.CLIENT_ID
WHERE i.CLIENT_ID IS NULL
Пока едете на работу (если Вы не за рулём) предлагаю решить ещё одну задачу на поиск ошибки в SQL-запросе.
Запрос ниже должен вывести список клиентов (без дублирующихся строчек), которым ни разу не выставляли счёт.
SELECT c.CLIENT_ID,
c.CLIENT_NAME,
c.CLIENT_INN
FROM CLIENTS c
LEFT JOIN INVOICES i
ON c.CLIENT_ID = i.CLIENT_ID
WHERE i.CLIENT_ID IS NULL
Друзья, спасибо за активное участие! Вижу, что не мало получилось неправильных ответов. Я сделаю небольшое разъясняющее видео по этой последней задаче! 👌
Постараюсь объяснить!
Постараюсь объяснить!
👍4
На прошлой неделе мы получили ещё одну благодарность от ученика нашего курса по SQL и базам данных! 🤗
Шолпан, спасибо Вам большое за такой развёрнутый и приятный отзыв!
Приятно им поделиться! 🙏
Я закончила курс "SQL. Базы данных. ORACLE" и хочу оставить свой отзыв, чтобы привлечь больше людей к вашему обучению, чтобы они могли получить знания и применить их в крупных IT компаниях.
Почему я выбрала именно вас:
1. На просторах интернета много курсов по SQL. Но когда я нашла ваш сайт, мне очень понравилось подробное описание программы обучения, указаны основные темы, подтемы и то, что мы будем изучать. Это создало у меня ясное представление о том, кем я буду и что я буду знать.
2. С первого же занятия я получила доступ к личной тестовой базе данных с собственным логином и паролем, а также программой PL/SQL Developer, которой я пользовалась для выполнения домашних заданий на своем домашнем компьютере в любое удобное для меня время.
3. Клиенториентированность. Очень вежливый и отзывчивый персонал. Помогут, подскажут, если проблемы, например, с настройками подключения к тестовой базе данных, подключатся к Вам удаленно к вашему компьютеру и исправят ошибки. Нет равнодушия со стороны сотрудников. На протяжении всего курса, лично я, себя чувствовала “нужной”, для меня это очень важно.
4. Грамотно организованы лекции. Преподаватель ясно и доступно объясняет темы. Много практических заданий, которые заставляли мой мозг работать на полную мощность. Но когда я достигала результата, я чувствовала такое волнение и счастье, потому что я справилась! Шаг за шагом я познавала весь курс и ощущала прогресс.
5. Мне открыть новые возможности в трудоустройстве. Обладание знаниями SQL и баз данных открывает двери во многих сферах IT. От крупных IT-компаний до стартапов, многие организации нуждаются в специалистах, которые эффективно управляют данными.
Спасибо Вам за потрясающий курс и Вашу заботу!
Шолпан, спасибо Вам большое за такой развёрнутый и приятный отзыв!
Приятно им поделиться! 🙏
Я закончила курс "SQL. Базы данных. ORACLE" и хочу оставить свой отзыв, чтобы привлечь больше людей к вашему обучению, чтобы они могли получить знания и применить их в крупных IT компаниях.
Почему я выбрала именно вас:
1. На просторах интернета много курсов по SQL. Но когда я нашла ваш сайт, мне очень понравилось подробное описание программы обучения, указаны основные темы, подтемы и то, что мы будем изучать. Это создало у меня ясное представление о том, кем я буду и что я буду знать.
2. С первого же занятия я получила доступ к личной тестовой базе данных с собственным логином и паролем, а также программой PL/SQL Developer, которой я пользовалась для выполнения домашних заданий на своем домашнем компьютере в любое удобное для меня время.
3. Клиенториентированность. Очень вежливый и отзывчивый персонал. Помогут, подскажут, если проблемы, например, с настройками подключения к тестовой базе данных, подключатся к Вам удаленно к вашему компьютеру и исправят ошибки. Нет равнодушия со стороны сотрудников. На протяжении всего курса, лично я, себя чувствовала “нужной”, для меня это очень важно.
4. Грамотно организованы лекции. Преподаватель ясно и доступно объясняет темы. Много практических заданий, которые заставляли мой мозг работать на полную мощность. Но когда я достигала результата, я чувствовала такое волнение и счастье, потому что я справилась! Шаг за шагом я познавала весь курс и ощущала прогресс.
5. Мне открыть новые возможности в трудоустройстве. Обладание знаниями SQL и баз данных открывает двери во многих сферах IT. От крупных IT-компаний до стартапов, многие организации нуждаются в специалистах, которые эффективно управляют данными.
Спасибо Вам за потрясающий курс и Вашу заботу!
👍11
Всем доброго понедельника и отличного старта учебной (рабочей) недели!
Готовы рассмотреть ещё один SQL-запрос и определить, есть ли в нём ошибка? Названия таблиц и столбцов, используемых в запросе, написаны без опечаток.
Запрос должен показать филиалы, их адреса и количество работающих в них сотрудников.
SELECT f.FILIAL_NAME,
f.ADDRESS,
COUNT(p.PERSON_ID) AS PERS_COUNT
FROM FILIALS f
LEFT JOIN PERSONS p
ON p.FILIAL_ID = f.FILIAL_ID
GROUP BY f.FILIAL_NAME
Готовы рассмотреть ещё один SQL-запрос и определить, есть ли в нём ошибка? Названия таблиц и столбцов, используемых в запросе, написаны без опечаток.
Запрос должен показать филиалы, их адреса и количество работающих в них сотрудников.
SELECT f.FILIAL_NAME,
f.ADDRESS,
COUNT(p.PERSON_ID) AS PERS_COUNT
FROM FILIALS f
LEFT JOIN PERSONS p
ON p.FILIAL_ID = f.FILIAL_ID
GROUP BY f.FILIAL_NAME
❤3
Правильно ли составлен приведённый выше SQL запрос?
Anonymous Quiz
19%
Да, SQL-запрос написан верно.
14%
Нет SQL-запрос составлен неверно. Есть ошибка в использовании агрегатной функции.
8%
Нет, SQL-запрос составлен неверно. Есть ошибка в соединении таблиц.
59%
Нет, SQL-запрос составлен неверно. Есть ошибка в группировке.
Здравствуйте, друзья!
Сегодня на просторах интернета нашёл ещё один интересный тестовый вопрос к собеседованию. Предлагаю его Вашему вниманию.
Сегодня на просторах интернета нашёл ещё один интересный тестовый вопрос к собеседованию. Предлагаю его Вашему вниманию.
🔥3
С помощью какой update-команды можно обновить значения более чем одной колонки?
Anonymous Quiz
71%
UPDATE table_name SET col1_name = 'col1val', col2_name = 'col2val';
11%
UPDATE table_name SET col1_name = 'col1val' AND SET col2_name = 'col2val';
7%
UPDATE table_name SET col1_name = 'col1val' SET col2_name = 'col2val';
11%
Одним запросом можно обновить не более одной колонки