Здравствуйте, друзья!
Продолжаем разбирать ошибки 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%
Да,ошибка есть. Запрос в некоторых случаях может выдавать неправильные данные или приводить к ошибке
47%
Нет, ошибки в этом запросе нет.
Спасибо за активное участие в поиске возможной ошибки! Как вы уже поняли, она всё же есть. И ошибки такого вида, к сожалению, иногда допускают и действующие 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%
Одним запросом можно обновить не более одной колонки
Добрый день, дорогие друзья!
Вчера записал видео проверки одной из самостоятельных работ ученика нашего курса программирования в PL/SQL (ORACLE).
И уже смонтировал первый кусочек того, что записал. Вся проверка (с детальным разбором кода ученика и его оптимизацией) заняла около получаса. Пока смонтировал первых примерно минут 15. Ниже выложу ссылку на видео.
Если Вы прошли наш курс "SQL. Базы данных. ORACLE. MS SQL Server. MySql", то можно одним глазком посмотреть что мы изучаем на курсе программирования🙂
Правда я вчера проверял 14 урок курса. Возможно будет не легко 😅
Но мы и на курсе "SQL. Базы данных. ORACLE. MS SQL Server. MySql" немного программируем: создаём триггеры, пишем функции. Поэтому часть, всё же, должна быть понятна! 💪
https://youtu.be/SYVarKc1U0g
Вчера записал видео проверки одной из самостоятельных работ ученика нашего курса программирования в PL/SQL (ORACLE).
И уже смонтировал первый кусочек того, что записал. Вся проверка (с детальным разбором кода ученика и его оптимизацией) заняла около получаса. Пока смонтировал первых примерно минут 15. Ниже выложу ссылку на видео.
Если Вы прошли наш курс "SQL. Базы данных. ORACLE. MS SQL Server. MySql", то можно одним глазком посмотреть что мы изучаем на курсе программирования🙂
Правда я вчера проверял 14 урок курса. Возможно будет не легко 😅
Но мы и на курсе "SQL. Базы данных. ORACLE. MS SQL Server. MySql" немного программируем: создаём триггеры, пишем функции. Поэтому часть, всё же, должна быть понятна! 💪
https://youtu.be/SYVarKc1U0g
YouTube
Программирование в PL/SQL (ORACLE). Массивы, Циклы. ⭐⭐⭐⭐
Уроки программирования в PL/SQL (ORACLE). Разбираем задачу с массивами, циклами. Оптимизация решения, поиск ошибок.
#массив #программирование #программированиедляначинающих #plsql #sql #oracle #циклы #программированиеснуля
#массив #программирование #программированиедляначинающих #plsql #sql #oracle #циклы #программированиеснуля
👍10
Здравствуйте, друзья!
Продолжаем решать SQL задачи!
Есть таблица клиентов CLIENTS, имеющая столбцы ID, DATE_CREATE и NAME, и есть таблица счетов клиентам INVOICES со столбцами ID, DATE_INVOICE, ID_CLIENT и SUM_INVOICE.
Требуется вывести клиентов, которым выставлен хотя бы один счёт.
Предположите, пожалуйста, правильно ли составлен SQL-запрос:
SELECT *
FROM CLIENTS
WHERE EXISTS (SELECT * FROM INVOICES WHERE ID_CLIENT = ID)
Продолжаем решать SQL задачи!
Есть таблица клиентов CLIENTS, имеющая столбцы ID, DATE_CREATE и NAME, и есть таблица счетов клиентам INVOICES со столбцами ID, DATE_INVOICE, ID_CLIENT и SUM_INVOICE.
Требуется вывести клиентов, которым выставлен хотя бы один счёт.
Предположите, пожалуйста, правильно ли составлен SQL-запрос:
SELECT *
FROM CLIENTS
WHERE EXISTS (SELECT * FROM INVOICES WHERE ID_CLIENT = ID)
Правильно ли составлен SQL-запрос?
Anonymous Quiz
36%
Да, запрос вернёт клиентов, имеющих хотя бы один счёт.
64%
Нет, запрос составлен не правильно. Он вернёт неверные данные.