Tips & Tricks. Функции vs Хранимые процедуры в SQL Server
В этой статье мы рассмотрим разницу между функциями и хранимыми процедурами в SQL Server на простых примерах.
#sql
Читать статью
В этой статье мы рассмотрим разницу между функциями и хранимыми процедурами в SQL Server на простых примерах.
#sql
Читать статью
Трюк дня. Найти второе место по зарплате
Напишите SQL-запрос для получения из таблицы (
Например, для таблицы на картинке выше такой запрос должен вернуть
Решение будет вечером.
#tips
Напишите SQL-запрос для получения из таблицы (
employee) с зарплатами записи, содержащие вторую по размеру заработную плату.Например, для таблицы на картинке выше такой запрос должен вернуть
200. Если в таблице нет значения, меньшего, чем самая высокая зарплата — запрос должен вернуть null.Решение будет вечером.
#tips
Трюк дня. Найти второе место по зарплате. Решение.
Решение 1: использование
Здесь выбирается самое большое значение зарплаты, не равное максимальной зарплате, полученной по всей таблице. В результате мы и получаем то, что нужно — вторую по величине зарплату.
#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
Какой результат возвратит код для таблицы с картинки выше:
SELECT COUNT (city) FROM table;
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);
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
Читать статью
В этой статье мы рассмотрим best practices при написании SQL, позволяющие улучшить читабельность и производительность запросов.
#sql
Читать статью
Задача на логику.
Представьте себе замкнутую по окружности железную дорогу. По ней едет поезд, последний вагон которого скреплён с первым так, что внутри можно свободно перемещаться между вагонами. Вы оказались в одном случайном вагоне и ваша задача — подсчитать их общее количество. В каждом вагоне можно включать или выключать свет, но начальное положение переключателей случайное и заранее неизвестно.
Все вагоны внутри выглядят строго одинаково, окна закрыты так, что невозможно посмотреть наружу, движение поезда равномерное. Помечать вагоны как-либо, кроме включения или выключения света, нельзя. Количество вагонов конечно.
Решение будет вечером.
#логика
Представьте себе замкнутую по окружности железную дорогу. По ней едет поезд, последний вагон которого скреплён с первым так, что внутри можно свободно перемещаться между вагонами. Вы оказались в одном случайном вагоне и ваша задача — подсчитать их общее количество. В каждом вагоне можно включать или выключать свет, но начальное положение переключателей случайное и заранее неизвестно.
Все вагоны внутри выглядят строго одинаково, окна закрыты так, что невозможно посмотреть наружу, движение поезда равномерное. Помечать вагоны как-либо, кроме включения или выключения света, нельзя. Количество вагонов конечно.
Решение будет вечером.
#логика
👍1
Решение сегодняшней задачи на логику.
1. Включить свет в начальном вагоне, в котором вы находитесь, если он ещё не горит.
2. Затем идти в одну любую сторону до тех пор, пока не встретите вагон с работающим освещением, при этом обязательно считать пройденные вагоны.
3. Выключить в найденном вагоне свет и идти обратно к начальному. Если в нём свет всё ещё горит, то повторить операцию. Если же нет, значит вы прошли полный круг и знаете ответ.
#логика
1. Включить свет в начальном вагоне, в котором вы находитесь, если он ещё не горит.
2. Затем идти в одну любую сторону до тех пор, пока не встретите вагон с работающим освещением, при этом обязательно считать пройденные вагоны.
3. Выключить в найденном вагоне свет и идти обратно к начальному. Если в нём свет всё ещё горит, то повторить операцию. Если же нет, значит вы прошли полный круг и знаете ответ.
#логика
Какое значение вернёт следующий PostgreSQL запрос:
SELECT CEIL(53.2);
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 допускается перечисление не всех полей в разделе
В данном примере группировка выполняется по двум полям, а выводится на экран одно поле. А вот наоборот сделать уже нельзя.
#вопросы #собеседование
Да, отработает. В SQL допускается перечисление не всех полей в разделе
SELECT, если мы группируем по нескольким полям. В данном примере группировка выполняется по двум полям, а выводится на экран одно поле. А вот наоборот сделать уже нельзя.
#вопросы #собеседование
Tips & Tricks. Очистка raw data в SQL
В этой статье мы рассмотрим несколько примеров, как очистить реальные данные так, чтобы можно было их использовать для дальнейшей работы с ними.
#sql
Читать статью
В этой статье мы рассмотрим несколько примеров, как очистить реальные данные так, чтобы можно было их использовать для дальнейшей работы с ними.
#sql
Читать статью
👍2
Трюк дня. Ранг без
Напишите SQL-запрос, который будет ранжировать
Решение будет вечером.
#tips
RANK()Напишите SQL-запрос, который будет ранжировать
scores из таблицы scores без использования оконной функции. Одинаковые scores должны иметь одинаковый ранг. Ранг, следующий за одинаковыми scores, должен быть следущий целым числом (см. ожидаемый результат на картинке выше). Решение будет вечером.
#tips
⚡1👍1
Трюк дня. Ранг без RANK(). Решение.
Соединим таблицу саму на себя, сравнивая
Подсчитаем все уникальные значения объединённых
Соединим таблицу саму на себя, сравнивая
score.Подсчитаем все уникальные значения объединённых
score. Это и даёт эквивалент DENSE_RANK(). SELECT s1.score, count(DISTINCT s2.score) AS score_rank
FROM scores s1
JOIN scores s2
ON s1.score <= s2.score
GROUP BY s1.id, s1.score
ORDER BY 1 DESC
#tipsКакой из перечисленных ниже PostgreSQL запросов вернет результат как на картинке выше?
Anonymous Quiz
18%
VALUES ('Blue'), ('Red'), ('Green');
26%
SELECT 'Blue', 'Red', 'Green';
22%
SELECT ['Blue', 'Red', 'Green'];
21%
Ничего из перечисленного
13%
Посмотреть ответы