Пишем на SQL
1.93K subscribers
38 photos
6 videos
7 files
97 links
Уроки по SQL. Изучаем базы данных на примере СУБД ORACLE, MySQL, MS SQL Server, PostgreSql
Download Telegram
Немного юмора.jpg
42.1 KB
Немного it юмора. Взято из интернета
😁13
Доброе утро, друзья!

На просторах интернета нашёл небольшую задачку по SQL. Дана пустая таблица publisher с колонками id и name. На id стоит автоинкремент, а столбец name имеет тип varchar(40). Какой из следующих запросов не сможет быть выполнен:
Anonymous Quiz
2%
INSERT INTO publisher (name) VALUES ('OREILLY');
6%
INSERT INTO publisher (name) VALUES ('О Reilly');
87%
INSERT INTO publisher (name) VALUES ('O'Reilly');
5%
INSERT INTO publisher (name) VALUES ('O-Reilly');
Добрый день, друзья!

В таблице ORDERS всего 5 строк. Столбец LEAD_TYPE (тип данных INT) содержит следующие значения:1, 2, 2, 2, 3. Запрос SELECT COUNT(1) FROM ORDERS WHERE LEAD_TYPE = 2 LIMIT 2 (синтаксис MySql) вернёт значение:
Anonymous Quiz
4%
0
12%
1
48%
2
30%
3
2%
4
1%
5
4%
NULL
Здравствуйте, друзья!

Недавно выкладывал очередную SQL задачу, но из-за опечатки, которую Вы у меня нашли уже за первые 10 минут после публикации, пришлось задачу удалить 🙂

Публикую повторно (с корректировкой):

В таблице TEMP_TABLE не известное количество строк. В качестве начальных условий задачи не известны и значения поля FLD1 таблицы. Аналитик выполнил запрос SELECT COUNT(FLD1), MIN(FLD1), MAX(FLD1) FROM TEMP_TABLE и увидел, что все три значения одинаковые.
👍8
Какое значение мог увидеть аналитик из ниже перечисленных?
Anonymous Quiz
33%
Null
1%
-1
18%
0
48%
1
👍3
Друзья, всем привет!

Айти шутка от нашего администратора!

P.S.: не повторять!
🤣51😱1
Всем доброго понедельника!

Примите ещё одну интересную задачу по 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
IMG_20240426_171847_369.jpg
14.1 KB
Друзья, добрый день!

Получили от Вас ещё несколько приятных отзывов после прохождения нашего курса по SQL!

Спасибо!
👍3
IMG_20240426_172056_546.jpg
13.1 KB
👍4
Друзья, спасибо, что изучаете SQL и программирование в PL/SQL (ORACLE) с нами!

У нас небольшое дополнение к курсам!

Теперь у нас будет не только индивидуальное сопровождение (каждого ученика), проверка и разбор решений самостоятельных задач после каждого урока, но и групповые очные вебинары.

Плюсы:
+ совместное решение задач, в том числе и дополнительных;
+ быстрое получение ответов на интересующие вопросы;
+ более близкое общение с менторами и со мной.

Продолжительность каждого вебинара пока планируется 1 час. Чуть позже, если будет нужно, можем увеличить время.
🔥6👍1
Подскажите, пожалуйста, в какое время Вам было бы удобно активное участие в вебинарах?

По курсу SQL. Базы данных. ORA­CLE. 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?
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.

Способы решения задачи напишу, как всегда, попозже!
Спасибо всем за активное участие!

Первый вариант решения предыдущей задачи - это использование оператора 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.

Буду рад Вашему активному участию! Буду ждать решения и вопросы (если что-то не понятно написал).
👍3
Спасибо всем за отличные решения!

В нашем случае мы переводили числовые значения года и месяца столбца PERIOD таблицы TABLE_KOEF к ДАТЕ, потому что к датам можно очень легко прибавить месяц (или указанное количество месяцев). Далее обратно преобразовывали полученные даты (в которых было уже на месяц больше) в числовой формат, состоящий опять из номера года и месяца. Полученные расчётные значения мы использовали для соединения с таблицей TABLE_INVOICES. Решили как раз способом, который написал Georgi Fofanov. Только нам нужно было месяц прибавить к тому, что имелось в столбце PERIOD таблицы TABLE_KOEF.

Способ просто прибавить число 1 к значениям столбца PERIOD не подходит, так как, например, прибавление 1 к значению 202312 даст 13ый месяц, а, в этом случае, нам необходимо прибавление года, а значение месяца должно быть единичкой.

Способ с применением аналитических функций, позволяющих брать значение коэффициента со смещением строки, к сожалению, не рассматривали, так как для некоторых значениев PERIOD коэффициенты могли отсутствовать. Эту деталь, к сожалению, не написал в постановке задачи.

Ещё раз всех благодарю за участие!
👍31
Всем доброго понедельника!

Предлагаю очередную интересную задачу. В этот раз не столько на знания 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
Anonymous Quiz
33%
Нет, при любых значениях Width, Length и Height, результат в Total_Size1 и Total_Size2 одинаков
67%
Да, при некоторыз значениях Width, Length или Height, результат в Total_Size1 и Total_Size2 разный
👍1