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
Ответ на #вопрос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

Читать статью
Трюк дня. Поменять местами соседние записи

В таблице seat хранятся имена учеников и сведениях об их местах в классе.

Напишите MySQL запрос, который поменяет местами соседних учеников.

Если количество учеников нечётное — последнего ученика никуда пересаживать не надо.

Исходная таблица:
id student
1 Abbot
2 Doris
3 Emerson
4 Green
5 Jeames

Что должно получиться:
id student
1 Doris
2 Abbot
3 Green
4 Emerson
5 Jeames

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

#tips
👍1
Трюк дня. Поменять местами соседние записи. Решение

SELECT 
CASE
WHEN ((SELECT MAX(id) FROM seat)%2 = 1) AND id = (SELECT MAX(id) FROM seat) THEN id
WHEN id%2 = 1 THEN id + 1
ELSE id - 1
END AS id, student
FROM seat
ORDER BY id;

#tips
#вопрос24

Какие параметры используются в конструкции ORDER BY?

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

Каждой букве соответствует цифра от 0 до 9. Известно, что D=5. Вычислите все остальные цифры.

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

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

Ответ:
D = 5
O = 2
N = 6
A = 4
L = 8
G = 1
R = 7
B = 3
E = 9
T = 0

Задача решается простыми математическими расчётами и подбором.

Подробный разбор решения смотрите здесь

#логика
Трюк дня. Улучшить производительность запроса к таблице с индексом

В таблице test в столбце signup_date содержатся данные типа date. Для этого стоблца существует индекс.

Следующий SQL запрос не будет использовать существующий индекс, что может приводить к потере производительности:

SELECT
*
FROM test
WHERE DATEPART (YEAR, signup_date) = '2021';

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

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

#tips
Трюк дня. Улучшить производительность запроса к таблице с индексом. Решение

При использовании функции DATEPART происходит неявное преобразование типа данных. И индекс не будет использован.

Поэтому для лучшей производительности запрос лучше писать следующим образом:

*
FROM test
WHERE signup_date >= '20210101'
AND signup_date < '20220101';

#tips
#вопрос25

В чем разница между функциями RANK() и DENSE_RANK()?

Приведите пример.

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

Единственная разница между функциями RANK() и DENSE_RANK() заключается в случаях, когда несколько значений в наборе имеют одинаковый ранг.

В таких случаях RANK() будет назначать непоследовательные «ранги» значениям в наборе.

Тогда как DENSE_RANK() будет назначать последовательные ранги значениям в наборе.

Например, рассмотрим набор
{25, 25, 50, 75, 75, 100}.

Для такого набора RANK() вернет
{1, 1, 3, 4, 4, 6} (обратите внимание, что значения 2 и 5 пропущены), тогда как DENSE_RANK() вернет
{1, 1, 2, 3, 3, 4}.

#вопросы #собеседование
👍2
Статья дня. Оконные функции SQL простым языком с примерами

#sql

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