Всем доброго понедельника!
Примите ещё одну интересную задачу по SQL. В базе данных есть два представления (views):
v_articles_list и v_articles_stock. Ниже два запроса, которые выводят артикулы из представления v_articles_list, которых нет в представлении v_articles_stock.
Запрос 1:
select *
from v_articles_list
where article_id not in (select article_id from v_articles_stock)
Запрос 2:
select a.*
from v_articles_list a
left join v_articles_stock b
on a.article_id = b.article_id
where b.article_id is null
Примите ещё одну интересную задачу по SQL. В базе данных есть два представления (views):
v_articles_list и v_articles_stock. Ниже два запроса, которые выводят артикулы из представления v_articles_list, которых нет в представлении v_articles_stock.
Запрос 1:
select *
from v_articles_list
where article_id not in (select article_id from v_articles_stock)
Запрос 2:
select a.*
from v_articles_list a
left join v_articles_stock b
on a.article_id = b.article_id
where b.article_id is null
Могут ли эти запросы в каком-либо случае вернуть разный результат?
Anonymous Quiz
45%
Да, Запрос 1 может вернуть меньше строк
25%
Да, Запрос 2 может вернуть меньше строк
30%
Нет, Запрос 1 и Запрос 2 всегда будут возвращать одинаковый набор данных
IMG_20240426_171847_369.jpg
14.1 KB
Друзья, добрый день!
Получили от Вас ещё несколько приятных отзывов после прохождения нашего курса по SQL!
Спасибо!
Получили от Вас ещё несколько приятных отзывов после прохождения нашего курса по SQL!
Спасибо!
👍3
Друзья, спасибо, что изучаете SQL и программирование в PL/SQL (ORACLE) с нами!
У нас небольшое дополнение к курсам!
Теперь у нас будет не только индивидуальное сопровождение (каждого ученика), проверка и разбор решений самостоятельных задач после каждого урока, но и групповые очные вебинары.
Плюсы:
+ совместное решение задач, в том числе и дополнительных;
+ быстрое получение ответов на интересующие вопросы;
+ более близкое общение с менторами и со мной.
Продолжительность каждого вебинара пока планируется 1 час. Чуть позже, если будет нужно, можем увеличить время.
У нас небольшое дополнение к курсам!
Теперь у нас будет не только индивидуальное сопровождение (каждого ученика), проверка и разбор решений самостоятельных задач после каждого урока, но и групповые очные вебинары.
Плюсы:
+ совместное решение задач, в том числе и дополнительных;
+ быстрое получение ответов на интересующие вопросы;
+ более близкое общение с менторами и со мной.
Продолжительность каждого вебинара пока планируется 1 час. Чуть позже, если будет нужно, можем увеличить время.
🔥6👍1
Подскажите, пожалуйста, в какое время Вам было бы удобно активное участие в вебинарах?
По курсу SQL. Базы данных. ORACLE. MS SQL Server. MySql
По курсу SQL. Базы данных. ORACLE. MS SQL Server. MySql
Anonymous Poll
13%
В будни в рабочее время;
53%
В будни в 19:30;
34%
В субботу в 9:30.
По курсу Программирования в PL/SQL (ORACLE)
Anonymous Poll
14%
В будни в рабочее время;
58%
В будни в 19:30;
35%
В субботу в 9:30.
Добрый день, друзья!
Следующий вопрос для специалистов ORACLE. В базе данных есть некоторая таблица со столбцом DATE_CREATE с типом DATE. Можно ли в этом столбце сохранить значение даты со временем, например 23.05.2024 13:14:00?
Следующий вопрос для специалистов ORACLE. В базе данных есть некоторая таблица со столбцом DATE_CREATE с типом DATE. Можно ли в этом столбце сохранить значение даты со временем, например 23.05.2024 13:14:00?
Anonymous Quiz
54%
Да, можно
28%
Нет, при сохранении время обрежется. Сохранится только дата
18%
Нет, при сохранении даты со временем в столбец типа DATE будет SQL ошибка.
Всем доброго понедельника!
Решим интересную задачу по SQL?
Даны две таблицы TABLE_A и TABLE_B. В каждой таблице есть всего один столбец: ID типа NUMBER, содержащий числовые значения. В первой таблице в столбце ID значения:
10
20
30
40
50
Во второй таблице в столбце ID значения:
10
30
50.
Необходимо написать запрос, выбирающий значения столбца ID таблицы TABLE_A, которых нет в таблице TABLE_B. При этом запрос нужно написать не используя NOT.
Способы решения задачи напишу, как всегда, попозже!
Решим интересную задачу по SQL?
Даны две таблицы TABLE_A и TABLE_B. В каждой таблице есть всего один столбец: ID типа NUMBER, содержащий числовые значения. В первой таблице в столбце ID значения:
10
20
30
40
50
Во второй таблице в столбце ID значения:
10
30
50.
Необходимо написать запрос, выбирающий значения столбца ID таблицы TABLE_A, которых нет в таблице TABLE_B. При этом запрос нужно написать не используя NOT.
Способы решения задачи напишу, как всегда, попозже!
Спасибо всем за активное участие!
Первый вариант решения предыдущей задачи - это использование оператора MINUS (EXCEPT в MS SQL Server).
С помощью оператора MINUS можно вычесть из набора данных, полученным одним SELECT-ом, строки, полученные другим SELECT-ом:
SELECT * FROM TABLE_A
MINUS
SELECT * FROM TABLE_B
Ещё одним простым решением этой задачи будет использование LEFT JOIN-а для проверки наличия данных для таблицы TABLE_A в таблице TABLE_B.
Первый вариант решения предыдущей задачи - это использование оператора MINUS (EXCEPT в MS SQL Server).
С помощью оператора MINUS можно вычесть из набора данных, полученным одним SELECT-ом, строки, полученные другим SELECT-ом:
SELECT * FROM TABLE_A
MINUS
SELECT * FROM TABLE_B
Ещё одним простым решением этой задачи будет использование LEFT JOIN-а для проверки наличия данных для таблицы TABLE_A в таблице TABLE_B.
👍9
Сегодня помогал представителю клиента из Германии с одним запросом. Предлагаю аналогичную задачу и Вам (для гуру):
Есть таблица, содержащая некоторые суммы начислений, пусть называется TABLE_INVOICES, имеющая, среди прочих, следующие поля:
...
PERIOD NUMBER,
AMOUNT NUMBER,
...
В них хранится информация вида:
PERIOD AMOUNT
202403 100.78
202404 90.12
202405 200.51
...
В столбце PERIOD значение года и месяца.
И ещё есть таблица подготовленных коэффициентов для каждого месяца, пусть называется TABLE_KOEF. Имеет, по аналогии с предыдущей таблицей, тоже столбец PERIOD, содержащий год и месяц.
Содержит информацию вида:
PERIOD KOEF
202402 1
202403 0.5
202404 0.75
В таблице TABLE_KOEF столбец PERIOD является первичным ключом.
И теперь что нужно сделать: вывести все записи из таблицы TABLE_INVOICES, и для каждой строки рассчитать произведение значения столбца AMOUNT на коэффициент предыдущего месяца из таблицы TABLE_KOEF.
Буду рад Вашему активному участию! Буду ждать решения и вопросы (если что-то не понятно написал).
Есть таблица, содержащая некоторые суммы начислений, пусть называется TABLE_INVOICES, имеющая, среди прочих, следующие поля:
...
PERIOD NUMBER,
AMOUNT NUMBER,
...
В них хранится информация вида:
PERIOD AMOUNT
202403 100.78
202404 90.12
202405 200.51
...
В столбце PERIOD значение года и месяца.
И ещё есть таблица подготовленных коэффициентов для каждого месяца, пусть называется TABLE_KOEF. Имеет, по аналогии с предыдущей таблицей, тоже столбец PERIOD, содержащий год и месяц.
Содержит информацию вида:
PERIOD KOEF
202402 1
202403 0.5
202404 0.75
В таблице TABLE_KOEF столбец PERIOD является первичным ключом.
И теперь что нужно сделать: вывести все записи из таблицы TABLE_INVOICES, и для каждой строки рассчитать произведение значения столбца AMOUNT на коэффициент предыдущего месяца из таблицы TABLE_KOEF.
Буду рад Вашему активному участию! Буду ждать решения и вопросы (если что-то не понятно написал).
👍3
Спасибо всем за отличные решения!
В нашем случае мы переводили числовые значения года и месяца столбца PERIOD таблицы TABLE_KOEF к ДАТЕ, потому что к датам можно очень легко прибавить месяц (или указанное количество месяцев). Далее обратно преобразовывали полученные даты (в которых было уже на месяц больше) в числовой формат, состоящий опять из номера года и месяца. Полученные расчётные значения мы использовали для соединения с таблицей TABLE_INVOICES. Решили как раз способом, который написал Georgi Fofanov. Только нам нужно было месяц прибавить к тому, что имелось в столбце PERIOD таблицы TABLE_KOEF.
Способ просто прибавить число 1 к значениям столбца PERIOD не подходит, так как, например, прибавление 1 к значению 202312 даст 13ый месяц, а, в этом случае, нам необходимо прибавление года, а значение месяца должно быть единичкой.
Способ с применением аналитических функций, позволяющих брать значение коэффициента со смещением строки, к сожалению, не рассматривали, так как для некоторых значениев PERIOD коэффициенты могли отсутствовать. Эту деталь, к сожалению, не написал в постановке задачи.
Ещё раз всех благодарю за участие!
В нашем случае мы переводили числовые значения года и месяца столбца PERIOD таблицы TABLE_KOEF к ДАТЕ, потому что к датам можно очень легко прибавить месяц (или указанное количество месяцев). Далее обратно преобразовывали полученные даты (в которых было уже на месяц больше) в числовой формат, состоящий опять из номера года и месяца. Полученные расчётные значения мы использовали для соединения с таблицей TABLE_INVOICES. Решили как раз способом, который написал Georgi Fofanov. Только нам нужно было месяц прибавить к тому, что имелось в столбце PERIOD таблицы TABLE_KOEF.
Способ просто прибавить число 1 к значениям столбца PERIOD не подходит, так как, например, прибавление 1 к значению 202312 даст 13ый месяц, а, в этом случае, нам необходимо прибавление года, а значение месяца должно быть единичкой.
Способ с применением аналитических функций, позволяющих брать значение коэффициента со смещением строки, к сожалению, не рассматривали, так как для некоторых значениев PERIOD коэффициенты могли отсутствовать. Эту деталь, к сожалению, не написал в постановке задачи.
Ещё раз всех благодарю за участие!
👍3❤1
Всем доброго понедельника!
Предлагаю очередную интересную задачу. В этот раз не столько на знания SQL, сколько на знания основ математики.
Могут ли быть при каких-либо значениях ширины (столбец Width), длины (Столбец Length) или высоты (столбец Height) разными значения в столбцах Total_Size1 и Total_Size2?
Предлагаю очередную интересную задачу. В этот раз не столько на знания SQL, сколько на знания основ математики.
Могут ли быть при каких-либо значениях ширины (столбец Width), длины (Столбец Length) или высоты (столбец Height) разными значения в столбцах Total_Size1 и Total_Size2?
👍1
Select Round (p.Width * p.Length * p.Height) * p.Items_Count Total_Size1,
Round (p.Width * p.Length * p.Height * p.Items_Count) Total_Size2
From Positions p
Round (p.Width * p.Length * p.Height * p.Items_Count) Total_Size2
From Positions p
Anonymous Quiz
33%
Нет, при любых значениях Width, Length и Height, результат в Total_Size1 и Total_Size2 одинаков
67%
Да, при некоторыз значениях Width, Length или Height, результат в Total_Size1 и Total_Size2 разный
👍1
Добрый вечер, дорогие друзья!
Хочу поделиться новым отзывом, который недавно получили от одного из наших учеников! С разрешения ученика публикую его здесь!
Здравствуйте, Илья. Меня Шолпан зовут. Я ваша бывшая студентка. Сегодня я получила оффер (как сейчас модно говорить). Моя работа будет связана непосредственно с SQL. Работодатель, перед собеседованием скинул мне на почту задания по SQL, которые я с легкостью решила. Хочу вам сказать, человеческое спасибо, за то, что вы так доходчиво объясняли материал (а курсов по SQL, я пересмотрела много). Также благодарю Юлию, которая мне помогала с домашними заданиями. После ваших курсов, после полученного багажа знаний, я начала изучать Python, хочу отметить, что я с таким наслаждением слушала преподавателя, потому что мне, основные термины в программировании были понятны, тоесть я не лезла в интернет, что бы находить значение слов, а с удовольствием слушала лектора и получала новые знания.
В понедельник приступаю к новой работе, работать буду с sql. Я выросла на ступень выше. Благодарю вас за ваш талант преподавателя. Успехов вам в вашей работе и семейного счастья.
Хочу поделиться новым отзывом, который недавно получили от одного из наших учеников! С разрешения ученика публикую его здесь!
Здравствуйте, Илья. Меня Шолпан зовут. Я ваша бывшая студентка. Сегодня я получила оффер (как сейчас модно говорить). Моя работа будет связана непосредственно с SQL. Работодатель, перед собеседованием скинул мне на почту задания по SQL, которые я с легкостью решила. Хочу вам сказать, человеческое спасибо, за то, что вы так доходчиво объясняли материал (а курсов по SQL, я пересмотрела много). Также благодарю Юлию, которая мне помогала с домашними заданиями. После ваших курсов, после полученного багажа знаний, я начала изучать Python, хочу отметить, что я с таким наслаждением слушала преподавателя, потому что мне, основные термины в программировании были понятны, тоесть я не лезла в интернет, что бы находить значение слов, а с удовольствием слушала лектора и получала новые знания.
В понедельник приступаю к новой работе, работать буду с sql. Я выросла на ступень выше. Благодарю вас за ваш талант преподавателя. Успехов вам в вашей работе и семейного счастья.
🔥21👍9
Добрый день, друзья!
Предлагаю очередную задачу по SQL. Есть два запроса.
Запрос 1:
SELECT o.*,
(SELECT COUNT(*)
FROM ORDER_ITEMS
WHERE ID_ORDER = o.ID) AS COUNT_ITEMS
FROM ORDERS o
WHERE o.ID = 10
Запрос 2:
SELECT o.*,
COALESCE( (SELECT COUNT(*)
FROM ORDER_ITEMS
WHERE ID_ORDER = o.ID), 0) AS COUNT_ITEMS
FROM ORDERS o
WHERE o.ID = 10
Предлагаю очередную задачу по SQL. Есть два запроса.
Запрос 1:
SELECT o.*,
(SELECT COUNT(*)
FROM ORDER_ITEMS
WHERE ID_ORDER = o.ID) AS COUNT_ITEMS
FROM ORDERS o
WHERE o.ID = 10
Запрос 2:
SELECT o.*,
COALESCE( (SELECT COUNT(*)
FROM ORDER_ITEMS
WHERE ID_ORDER = o.ID), 0) AS COUNT_ITEMS
FROM ORDERS o
WHERE o.ID = 10
👍5
В таблице ORDER_ITEMS нет строк со значением 10 в столбце ID_ORDER. Результат выполнения обеих запросов:
Anonymous Quiz
56%
будет одинаков
44%
будет разный
Доброе утро, друзья!
Всем хорошего понедельника и продуктивной недели!
Спасибо, что продолжаете делиться интересными задачами по SQL.
Предлагаю поучаствовать в решении ещё одной задачи, которая поступила в прошлую пятницу. Текст задачи немного переделал и конкретизировал.
Дана таблица ACCOUNTS, содержащая данные о счетах клиентов (у клиента может быть несколько счетов). Среди прочих, в таблице ACCOUNTS есть следующие важные для нас столбцы:
ID_CLIENT - идентификатор клиента
DT_OPEN – дата открытия счета
DT_CLOSE – дата закрытия счета
Если дата закрытия счёта не заполнена (содержит значение NULL), то счет открыт на текущий день.
Требуется написать SQL-запрос, который должен посчитать количество клиентов с открытым счетом помесячно. Учитывать только счета, которые были открыты более одного дня. При решении нельзя использовать оператор DISTINCT.
Если счёт открыт в марте и закрыт в мае, то клиент с таким счетом должен войти в количество клиентов с открытым счетом во всех месяцах с марта по май включительно.
Отчёт должен быть вида:
Год Месяц Колво откр.клиентов
2005 январь 23
2005 февраль 89
2005 март 167
....
Попозже опубликую один из вариантов решения!
Всем хорошего понедельника и продуктивной недели!
Спасибо, что продолжаете делиться интересными задачами по SQL.
Предлагаю поучаствовать в решении ещё одной задачи, которая поступила в прошлую пятницу. Текст задачи немного переделал и конкретизировал.
Дана таблица ACCOUNTS, содержащая данные о счетах клиентов (у клиента может быть несколько счетов). Среди прочих, в таблице ACCOUNTS есть следующие важные для нас столбцы:
ID_CLIENT - идентификатор клиента
DT_OPEN – дата открытия счета
DT_CLOSE – дата закрытия счета
Если дата закрытия счёта не заполнена (содержит значение NULL), то счет открыт на текущий день.
Требуется написать SQL-запрос, который должен посчитать количество клиентов с открытым счетом помесячно. Учитывать только счета, которые были открыты более одного дня. При решении нельзя использовать оператор DISTINCT.
Если счёт открыт в марте и закрыт в мае, то клиент с таким счетом должен войти в количество клиентов с открытым счетом во всех месяцах с марта по май включительно.
Отчёт должен быть вида:
Год Месяц Колво откр.клиентов
2005 январь 23
2005 февраль 89
2005 март 167
....
Попозже опубликую один из вариантов решения!
Всем доброго понедельника!
Предлагаю возможное решение предыдущей задачи!
https://dzen.ru/a/ZoKhIU31g0FJOl8a
Предлагаю возможное решение предыдущей задачи!
https://dzen.ru/a/ZoKhIU31g0FJOl8a
Дзен | Статьи
Задачи на собеседовании по SQL ⭐⭐⭐⭐
Статья автора «Илья Хохлов» в Дзене ✍: Здравствуй, уважаемый читатель!
👍2