SQL Pro
4.98K subscribers
99 photos
9 files
76 links
SQL Pro - всё об SQL
Реклама: @anothertechrock

Контент канала:
1. Разбор вопросов с собеседований
2. Трюки SQL
3. Видео
4. Тесты
5. Задачи на логику
6. Юмор
Download Telegram
Ответ на предыдущий вопрос:

Неверное выражение BillingYear в условии WHERE. Несмотря на то, что он определен как алиас в выборке SELECT перед WHERE, логический порядок обработки условий отличается.

Правильный запрос будет выглядеть так:
SELECT Id, YEAR(BillingDate) AS BillingYear
FROM Invoices
WHERE YEAR(BillingDate) >= 2010;


#sql #собеседование
Вопрос на SQL собеседовании.

Как вы понимаете SELF JOIN?

Ответ:

SELF JOIN используется для соединения таблицы с ней самой.

При этом каждая строка таблицы соединяется с самой собой и с другими строками — в зависимости от заданных условий.

Синтаксис:
SELECT a.column_name, b.column_name
FROM table a, table b
WHERE condition;

SELF JOIN часто используется тогда, когда у разных полей одной таблицы могут быть одинаковые значения.

Например, один и тот же участник музыкальной группы может быть и вокалистом, и, например, клавишником. Если из базы музыкальных групп понадобится извлечь те, где вокалист и клавишник — одно лицо, потребуется SELF JOIN.


#sql #собеседование
🙏3😁1
Задача. Напишите SQL запрос.

Есть таблица transactions - картинка номер 1 (верхняя)
Где cash_flow — это выручка минус затраты за каждый день.

Нужно написать запрос, чтобы получить нарастающий итог для денежного потока каждый день таким образом, чтобы в конечном итоге получилась таблица в такой форме - картинка номер 2 (нижняя)

Ответ:
SELECT date, cash_flow,
SUM(cash_flow) OVER (ORDER BY date ASC) AS cumulative_cf
FROM transactions;
🔥24 июня в 20.00 мск. приглашаем на открытый урок: "Отказоустойчивый и высоко-доступный кластер RabbitMQ"

На вебинаре разберём практические подходы к созданию отказоустойчивой и высоко-доступной очереди сообщений для высоконагруженных систем.

📌 Что будет:
— Запуск и настройка кластера: Quorum Queues и Mirrored Queues (синхронная репликация)
— Синхронизация очередей и обеспечение согласованности
— Dead Letter Queue + правильные настройки durability
— Гарантии доставки для Producer: баланс между надёжностью и производительностью
— Asynchronous cluster-to-cluster message routing: Exchange Federation и Shovels

🎯 После вебинара вы сможете:
— Самостоятельно развернуть отказоустойчивый кластер RabbitMQ
— Настраивать Quorum Queues и Mirrored Queues под разные сценарии
— Правильно работать с Dead Letter Queues и гарантиями доставки
— Организовывать межкластерное взаимодействие сообщений
— Проектировать надёжные асинхронные коммуникации в микросервисной архитектуре

👉 Регистрация открыта: https://vk.cc/cYRCK4

Вебинар приурочен к старту курса «Высоконагруженные системы: архитектура и масштабирование».

🎁При покупке курса вы получите в подарок мини-курс по Kafka, который поможет подготовиться к собеседованию в бигтех

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1👍1
Трюк дня. Извлечение имени, отчества и фамилии из строки с полным именем

В столбце fullname таблицы customers содержится имя, отчество и фамилия в следующем формате: 'name middlename surname'.

Напишите MySQL-запрос, который извлечет name, middlename и surname в отдельные столбцы. Если middlename не существует, то в результате в middlename должен быть NULL.

Например, из 'Alena Igorevna Petrova' должны получиться 3 столбца:
• name = 'Alena',
• middlename = 'Igorevna',
• surname = 'Petrova'.

А из строки 'Jack Powers' получится следующее:
• name = 'Jack',
• middlename = NULL,
• surname = 'Powers'.

Решение будет вечером.

#tips
3💩1
Трюк дня. Извлечение имени, отчества и фамилии из строки с полным именем. Решение.

SELECT
SUBSTRING_INDEX (SUBSTRING_INDEX (fullname, ' ', 1), ' ', -1) AS name,
IF (LENGTH (fullname) - LENGTH (REPLACE (fullname, ' ', '')) > 1,
SUBSTRING_INDEX(SUBSTRING_INDEX (fullname, ' ', 2), ' ', -1), NULL)
AS middlename,
SUBSTRING_INDEX (SUBSTRING_INDEX (fullname, ' ', 3), ' ', -1) AS surname
FROM customers;


#tips
🥴1
Задача на мышление и логику.

Дано 12 монет, из которых 11 – настоящие, и только 1 – фальшивая. Фальшивая монета отличается от настоящих по массе. Какое минимальное количество взвешиваний необходимо, чтобы обнаружить фальшивую монету? Для взвешивания используются чашечные весы.

Решение будет вечером.

#логика
Решение сегодняшней задачи на логику и мышление.

Минимальное количество взвешиваний – 3, ведь даже если мы взвесим 2 раза, то как мы узнаем, какая из монет фальшивая? Большую часть монет составляют настоящие, так что 2 монеты с одинаковым весом и будут настоящими, третья с другим весом – фальшивой.

Ответ: 3 взвешивания.

#логика
Задача на мышление и логику.

Определите, какое число должно стоять на месте знака вопроса.

Решение будет вечером.

#логика
1
🔥 Для начинающих аналитиков и разработчиков.

Освойте главный инструмент для работы с данными. Курс проведет вас от первых SELECT до оконных функций и сложных соединений.

Формат: 15 коротких уроков + PDF-шпаргалка. Доступ навсегда.

💰 Цена: 6 900 ₽.

🆓 Попробуйте бесплатно: на странице курса есть тариф с вводным уроком и конспектом на 2 дня.

👉 Узнать подробнее и записаться: https://high.skillspace.ru/course/125816/about
🔥1