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

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

Напишите PostgreSQL-запрос, который возвратит простые числа от 2 до 1000.

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

#tips
Трюк дня. Простые числа. Решение.

Простое число - натуральное (целое положительное) число, имеющее ровно два различных натуральных делителя — единицу и самого себя.

Для начала создадим набор чисел от 2 до 1000 с помощью функции generate_series.

Затем с помощью NOT EXISTS (которое можно, модифицировав, заменить на JOIN) мы соединяем таблицу саму на себя и затем выбираем только те значения, для которых ни одно деление на меньшее число не дает остаток 0.

WITH x AS (
SELECT * FROM generate_series( 2, 1000 ) x
)
SELECT x.x
FROM x
WHERE NOT EXISTS (
SELECT 1 FROM x y
WHERE x.x > y.x AND x.x % y.x = 0
);


#tips
Из-за какого слова в коде MySQL выдаст ошибку?
Anonymous Quiz
9%
INTO
8%
city
31%
key
4%
VALUES
38%
Код не содержит ошибок
10%
Ничего из перечисленного
Трюк дня. Сравнение значений столбцов

Перепишите PostgreSQL запрос так, чтобы не использовать оператор AND.

WITH users (id, surname)
AS (VALUES
(1, 'Powers'),
(2, 'Sierra'),
(3, 'Oushen'))

SELECT id, surname
FROM users
WHERE id = 2 AND surname = 'Sierra';

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

#tips
👎3
Трюк дня. Сравнение значений столбцов. Решение

WITH users (id, surname) 
AS (VALUES
(1, 'Powers'),
(2, 'Sierra'),
(3, 'Oushen'))

SELECT id, surname
FROM users
WHERE (id, surname) = (2,'Sierra');


#tips
🤡4👍1🤣1
Задача на мышление и логику.

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

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

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

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

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

#логика
👎3👍2
Вопрос на SQL собеседовании.

Чем NULL отличается от 0

Ответ:

0 - это число.

NULL - это не число, а также NULL не является значением пустой строки. NULL используется для указания того, что данные отсутствуют, неизвестны, неприменимы. NULL не равен ничему, даже другому NULL.


#sql #собеседование
Вопрос на 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 #собеседование