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
Задача на логику.

Представьте, что земной шар обмотали веревкой по экватору. Затем веревку увеличили на 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.

#вопросы #собеседование
Трюк дня. Максимальное значение без self-join

Напишите MySQL запрос, возвращающий максимальную salary для каждого t_id, не соединяя таблицу саму на себя.

t_id salary
1 2500
2 3000
1 1900


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

#tips
Трюк дня. Максимальное значение без self-join. Решение

SELECT *
FROM
(
SELECT
e.*,
CASE WHEN (salary = MAX (salary) OVER (PARTITION BY t_id)) THEN 'Y' ELSE 'N' END AS max_num_id
FROM
employee e
) DAT2
WHERE max_num_id = 'Y';


#tips
#вопрос23

Напишите SQL запрос для создания пустой таблицы из существующей.

То есть структура таблицы должна быть такая же как и у существующей, но в новой таблице не должно быть ни одной записи.

#вопросы #собеседование
👍1
Ответ на #вопрос23

CREATE TABLE new_table AS (
SELECT * 
FROM old_table
WHERE 1=2
); 


#вопросы #собеседование
Статья дня. Эс-Кью-Эль или Сиквел: как произносится SQL?

#sql

Читать статью