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
Сколько записей возвратит следующий запрос:

SELECT 22 UNION SELECT 35 UNION SELECT 22;
Anonymous Quiz
8%
1
26%
2
24%
3
7%
NULL
15%
Ничего из перечисленного
20%
Посмотреть ответы
#вопрос7

Почему данный код выведет ошибку?

SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
WHERE city_m = 'EU:Oslo';

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

Код выдаст ошибку, так как в данном случае alias нельзя использовать в операторе WHERE.

Порядок выполнения упомянутого SELECT запроса следующий:
1. FROM
2. WHERE
3. SELECT

Соответственно при выполнении команды WHERE, alias, задаваемый в SELECT еще неизвестен.

Для PostgreSQL или MySQL данную проблему можно решить, например, следующим образом:

WITH ct AS (
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
)
SELECT ct.*
FROM ct
WHERE ct.city_m = 'EU:Oslo';

А какие еще варианты решения данной проблемы вы знаете?

#вопросы #собеседование
Tips & Tricks. SQL vs NoSQL в примерах

В этой статье мы рассмотрим примеры, демонстрирующие, как выполнять запросы к базам данных SQL и NoSQL.

#sql

Читать статью
Задача на логику.

Кабель длиной 80 метров висит на двух столбах. Высота каждого столба — 50 метров.

Каково расстояние между столбами, если центр провисающего кабеля находится на высоте 10 метров от земли?

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

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

Ответ: 0.

Кабель длиной 80 метров провисает на высоте 10 метров от земли. При этом высота столба 50 метров. Значит, если провести горизонтальную линию через точку провисания каната, верхняя часть столба будет равняться 40 метрам.

Если верхняя часть столба 40 метров и длина кабеля до середины — тоже 40 метров, то это не треугольник а прямая линия. И соответственно, расстояние между столбами будет равно 0.

А как бы вы решили эту задачу, если бы центр кабеля находился на расстоянии 20 метров от земли?

#логика
Какой ранг будет у записи с id = 3 с картинки выше, если использовать следующую функцию:

RANK() OVER (ORDER BY firstname) ?
Anonymous Quiz
25%
1
34%
2
15%
3
7%
Ничего из перечисленного
19%
Посмотреть ответы
Видео дня. Типы данных в SQL

Ссылка на YouTube

#видео
Какой результат возвратит следующая функция в PostgreSQL:

TO_DATE ('2017:JUNE:11','YYYY:Month:DD')?
Anonymous Quiz
28%
2017-JUNE-11
19%
2017-Jun-11
22%
2017-06-11
3%
NULL
14%
Ничего из перечисленного
14%
Посмотреть ответы
#вопрос8

В чем разница между типами данных VARCHAR и CHAR в SQL?

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

Типы данных CHAR и VARCHAR очень схожи между собой, но различаются по способам их хранения и извлечения.

В столбце типа CHAR длина поля постоянна и задается при создании таблицы. Эта длина может принимать любое значение между 1 и 255.

Величины типа CHAR при хранении дополняются справа пробелами до заданной длины. Эти концевые пробелы удаляются при извлечении хранимых величин.

Величины в столбцах VARCHAR представляют собой строки переменной длины. Так же как и для столбцов CHAR, можно задать столбец VARCHAR любой длины между 1 и 255.

Однако, в противоположность CHAR, при хранении величин типа VARCHAR используется только то количество символов, которое необходимо, плюс один байт для записи длины. Хранимые величины пробелами не дополняются, наоборот, концевые пробелы при хранении удаляются.

Различия можно увидеть на картинке выше.

#вопросы #собеседование
👍1
Tips & Tricks. Функции vs Хранимые процедуры в SQL Server

В этой статье мы рассмотрим разницу между функциями и хранимыми процедурами в SQL Server на простых примерах.

#sql

Читать статью
Трюк дня. Найти второе место по зарплате

Напишите SQL-запрос для получения из таблицы (employee) с зарплатами записи, содержащие вторую по размеру заработную плату.

Например, для таблицы на картинке выше такой запрос должен вернуть 200. Если в таблице нет значения, меньшего, чем самая высокая зарплата — запрос должен вернуть null.

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

#tips
Трюк дня. Найти второе место по зарплате. Решение.

Решение 1: использование IFNULL и OFFSET

• IFNULL(expression, alt): эта функция возвращает аргумент expression в случае, если он не равен null. В противном случае возвращается аргумент alt. Мы используем эту функцию чтобы возвратить null, если в таблице не окажется искомого значения.
• OFFSET: этот оператор используется с ORDER BY для того чтобы отбросить первые n строк. Используется для получения второго по величине значения.

SELECT
IFNULL(
(SELECT DISTINCT salary
FROM employee
ORDER BY salary DESC
LIMIT 1
OFFSET 1
), null) AS sec_salary
FROM employee
LIMIT 1


Решение 2: использование MAX

Здесь выбирается самое большое значение зарплаты, не равное максимальной зарплате, полученной по всей таблице. В результате мы и получаем то, что нужно — вторую по величине зарплату.

SELECT
MAX(salary) AS sec_salary
FROM Employee
WHERE salary != (SELECT MAX(salary) FROM employee)


#tips
👍1
👍1
Какой результат возвратит код для таблицы с картинки выше:

SELECT COUNT (city) FROM table;
Anonymous Quiz
2%
1
1%
2
55%
3
30%
4
6%
Ничего из перечисленного
6%
Посмотреть ответы
Какой будет результат выполнения следующего PostgreSQL кода:

SELECT SPLIT_PART ('How~@~are~@~you?', '~@~', 2);
Anonymous Quiz
5%
How
28%
are
22%
you?
19%
Ничего из перечисленного
26%
Посмотреть ответы