SQL Pro
5.07K subscribers
142 photos
2 videos
10 files
127 links
SQL Pro - всё об SQL
Реклама: @anothertechrock

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

Отработает ли данный SQL запрос или упадет с ошибкой:

DELETE FROM table1 HAVING COUNT (field1) > 1

#вопросы #собеседование
Ответ на #вопрос19

Запрос не отработает.

Конструкция HAVING не может использоваться при удалении строк.
Она используется только при операции SELECT и чаще всего вместе с группировкой строк (GROUP BY).

#вопросы #собеседование
Статья дня. Регулярные выражения как способ решения реальных задач в SQL

#sql

Читать статью
Трюк дня. Генерация данных с помощью рекурсии в PostgreSQL

Напишите рекурсивный PostgreSQL запрос, который выдаст таблицу с целыми значениями от 1 до 5:

id
1
2
3
4
5

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

#tips
Трюк дня. Генерация данных с помощью рекурсии в PostgreSQL. Решение

WITH recursive t (v) AS (
SELECT 1 -- Исходное значение
UNION ALL
SELECT v + 1 -- Рекурсия
FROM t
)
SELECT v
FROM t
LIMIT 5

#tips
#вопрос20

Даны таблицы workers и departments. Найдите все департаменты без единого сотрудника.

#вопросы #собеседование
Ответ на #вопрос20

SELECT department_name
FROM workers w
RIGHT JOIN departments d ON (w.department_id = d.department_id)
WHERE first_name IS NULL;

#вопросы #собеседование
Задача на логику.

Представьте, что земной шар обмотали веревкой по экватору. Затем веревку увеличили на 1 метр и расположили так, что любая точка экватора равноудалена от веревки.

Сможет ли между веревкой и поверхностью земли пролезть мышь?

P.S. под экватором подразумеваем окружность :)

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

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

Ответ: да, сможет. Расстояние между веревкой и экватором составит ≈ 16 см.

Исходная длина = 2*π*R1
Новая длина = 2*π*R2 = Исходная длина + 1
Получаем: 2*π*R2 = 2*π*R1 + 1
Откуда: R2 - R1 = 1/(2*π) ≈ 0.16 м ≈ 16 см

#логика
Трюк дня. Проверка уникальности имени и фамилии

Напишите SQL запрос, который проверит уникальность комбинации name и surname таблицы customers при отсутствии первичных ключей:

name surname
Alex Kruis
Tim Boils
Tom Andreas
Tim Boils

Вариант решения будет вечером.

#tips
Трюк дня. Проверка уникальности имени и фамилии. Решение

SELECT
COUNT (*),
COUNT (DISTINCT name || surname)
FROM customers;

#tips
#вопрос21

Отработает ли данный период запрос или упадёт с ошибкой?

UPDATE table_1 SET field1 = ROW_NUMBER () FROM table_1;

#вопросы #собеседование
Ответ на #вопрос21

Нет, не отработает. Опытный инженер знает, что ROW_NUMBER() — это часть аналитической функции, которая не может быть применена сама по себе. Аналитические функции  используются только в конcтрукциях SELECT или ORDER BY.

#вопросы #собеседование
Статья дня. Использование хэш-ключей вместо строковых индексов

#sql

Читать статью
Трюк дня. Сравнение значений столбцов

Перепишите 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
Трюк дня. Сравнение значений столбцов. Решение

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

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

#tips
C помощью какого запроса можно получить текущую структуру таблицы tbl?
Anonymous Quiz
21%
SELECT * FROM tbl
1%
DROP TABLE tbl
28%
SHOW TABLE STRUCTURE tbl
31%
DESCRIBE tbl
9%
Все варианты неверные
10%
Узнать ответ
👍3
#вопрос22

В чем разница между UNION и UNION ALL?

#вопросы #собеседование
Ответ на #вопрос22

Оба UNION и UNION ALL объединяют результат двух разных SQL запросов.

Они отличаются тем, как они обрабатывают дубликаты:

UNION выполняет DISTINCT в результирующем наборе, исключая любые повторяющиеся строки.

UNION ALL не удаляет дубликаты, и поэтому он быстрее, чем UNION.

#вопросы #собеседование