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
Какой ранг будет у записи с 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%
Посмотреть ответы
#вопрос9

В чем разница между функциями NOW() и CURRENT_DATE() в PostgreSQL/MySQL?

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

NOW() возвращает время, когда начал исполняться оператор.

Основное различие между NOW() и CURRENT_DATE() заключается в том, что NOW() получает текущую дату и время в формате 'YYYY-MM-DD HH:MM:SS', а CURRENT_DATE() получает дату текущего дня 'YYYY-MM-DD'.

#вопросы #собеседование
Tips & Tricks. 9 best practices написания SQL запросов

В этой статье мы рассмотрим best practices при написании SQL, позволяющие улучшить читабельность и производительность запросов.

#sql

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

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

Все вагоны внутри выглядят строго одинаково, окна закрыты так, что невозможно посмотреть наружу, движение поезда равномерное. Помечать вагоны как-либо, кроме включения или выключения света, нельзя. Количество вагонов конечно.

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

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

1. Включить свет в начальном вагоне, в котором вы находитесь, если он ещё не горит.

2. Затем идти в одну любую сторону до тех пор, пока не встретите вагон с работающим освещением, при этом обязательно считать пройденные вагоны.

3. Выключить в найденном вагоне свет и идти обратно к начальному. Если в нём свет всё ещё горит, то повторить операцию. Если же нет, значит вы прошли полный круг и знаете ответ.

#логика
Какое значение вернёт следующий PostgreSQL запрос:
SELECT CEIL(53.2);
Anonymous Quiz
36%
53
24%
54
12%
53.0
12%
53.2
4%
Ничего из перечисленного
13%
Посмотреть ответы
#вопрос10

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

SELECT field1 FROM table GROUP BY field1, field2;

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

Да, отработает. В SQL допускается перечисление не всех полей в разделе SELECT, если мы группируем по нескольким полям.

В данном примере группировка выполняется по двум полям, а выводится на экран одно поле. А вот наоборот сделать уже нельзя.

#вопросы #собеседование
Tips & Tricks. Очистка raw data в SQL

В этой статье мы рассмотрим несколько примеров, как очистить реальные данные так, чтобы можно было их использовать для дальнейшей работы с ними.

#sql

Читать статью
👍2