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

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

Какой оператор имеет больший приоритет AND или OR (если они используются совместно)?

Ответ:

AND имеет больший приоритет, нежели OR

#sql #собеседование
🔥2
📝 Курс от OTUS: «Администрирование PostgreSQL. Экспертный уровень» — продвинутое погружение в работу с базой данных PostgreSQL в любых средах.

Освойте управление PostgreSQL на экспертном уровне: от настройки локальной инфраструктуры до развёртывания высокодоступных кластеров в облаках и Kubernetes. Научитесь автоматизировать процессы, оптимизировать производительность и экономить ресурсы — без лишних сервисов и избыточных затрат.

🔥 Приглашаем на серию из 2 бесплатных вебинаров курса — для DevOps‑инженеров, SRE, архитекторов данных, администраторов БД и разработчиков, которые хотят выйти на новый уровень владения PostgreSQL. 🔧💾

📅 26 марта в 20:00 МСК: «Путешествие запроса в PostgreSQL: от разбора до исполнения (от parser до executor)»

На вебинаре разберём, как PostgreSQL превращает текст запроса в результат — вскроем «чёрный ящик» и изучим каждый этап:
• От текста к дереву: как работают лексер и парсер, что такое parse tree и query tree, и зачем нужен rule rewriter (на примере того, как VIEW превращается в подзапрос).
• Планировщик изнутри: как оптимизатор строит plan nodes, оценивает стоимость через статистику (pg_statistic, correlation, MCV) и почему иногда ошибается.
• Executor и runtime: как plan tree исполняется итераторной моделью (Volcano model), где живут данные в памяти.
• Как читать EXPLAIN ANALYZE, чтобы видеть реальные узкие места.

Результат: вы поймёте, как именно PostgreSQL обрабатывает запросы, научитесь осознанно оптимизировать производительность — без метода подбора индексов. Уйдёте с чётким алгоритмом анализа и устранения «узких мест».


📅 9 апреля в 20:00 МСК: «PostgreSQL как векторная база данных: ИИ‑поиск без лишних сервисов»

На вебинаре разберём, как использовать PostgreSQL с расширением pgvector для семантического поиска и RAG‑систем — без внедрения отдельной векторной БД.

Программа:
• Работа с pgvector: установка, типы данных, индексы.
• Сравнение PostgreSQL и специализированных векторных БД по скорости и точности.
• Проектирование гибридного поиска (точный + семантический) в рамках одной базы.
• Выбор между индексами IVFFlat и HNSW для своей задачи.
• Примеры RAG‑запросов с комбинацией tsvector и векторного поиска.
• Успешные кейсы использования PostgreSQL для ИИ.

Результат: вы сможете добавить ИИ‑функции в продукт без усложнения инфраструктуры. Уйдёте с готовым планом внедрения векторного поиска на базе PostgreSQL.

🎯 Почему стоит участвовать:
- Получите практические инструменты: разбор реальных кейсов, шаблоны конфигураций, чек‑листы для аудита производительности.
- Изучите современные решения: pg_probackup, Wal‑G, pg_rewind, pgvector.
- Научитесь автоматизировать: используйте Terraform для установки ВМ и Ansible для развёртывания ПО.
- Разберётесь в облаках: отличия GCP, Yandex Cloud, SberCloud, VKCloud и как эффективно работать в каждом.
- Сможете задать вопросы практикующим инженерам и архитекторам PostgreSQL в прямом эфире.
- Примените знания сразу после вебинаров: с готовыми скриптами и инструкциями.

👉 Регистрируйтесь сейчас, а мы напомним о вебинаре накануне. OTUS.RU

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Задача SQL.

Дана таблица PERSONS (Сотрудники) - картинка
Альтернатива вашим планам на пятничный вечер — 27 марта, при условии, что вы любите базы данных:

✔️ Как не угробить чувствительные данные на DBaaS
✔️ FoundationDB vs Cassandra 5 — битва титанов в Авито
✔️ S3 в Авито: как 100 000+ бакетов не превращаются в хаос

Все это и многое другое — на Avito Database Meetup в московском офисе Avito (или на онлайн-трансляции).
Нашли ссылку
1
Вопрос на SQL собеседовании.

Что не так с этим запросом? Исправьте его, если нужно.

SELECT Id, YEAR(BillingDate) AS BillingYear 
FROM Invoices
WHERE BillingYear >= 2010;


Ответ будет вечером.

#sql #собеседование
Ответ на предыдущий вопрос:

Неверное выражение 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
🔥3👍2😁1🤯1😱1
Решение сегодняшней задачи на логику и мышление.

Вместо знака вопроса должно стоять число 179. Если двигаться по часовой стрелке начиная с 3, то каждое последующее число равно удвоенному предыдущему, к которому прибавили 1, 3, 5, 7, 9.

3 × 2 + 1 = 7.
7 × 2 + 3 = 17.
17 × 2 + 5 = 39.
39 × 2 + 7 = 85.
85 × 2 + 9 = 179.

#логика
👍2🔥2🤝1