SQL Pro
رفتن به کانال در Telegram
SQL Pro - всё об SQL Реклама: @anothertechrock Контент канала: 1. Разбор вопросов с собеседований 2. Трюки SQL 3. Видео 4. Тесты 5. Задачи на логику 6. Юмор
نمایش بیشتر4 923
مشترکین
-124 ساعت
-37 روز
-3430 روز
آرشیو پست ها
4 922
#вопрос12
Таблица
employee имеет две колонки: emp_name и emp_id. Какой результат возвратит следующий SQL запрос:
SELECT emp_name FROM employee ORDER BY 2 DESC;#вопросы #собеседование
4 922
Регистрация на чемпионат для системных аналитиков
Организаторы – IT_ONE и Сколково – подготовили для вас интересные нестандартные задачи, успешно пройдя которые вы сможете получить предложение о работе в технологической компании и разделить призовой фонд в 500 тысяч рублей.
Регистрация открыта до 25 марта. Вы также можете присоединиться к телеграм-каналу для поддержки участников. Успехов!
4 922
Сколько записей вернет следующий PostgreSQL запрос:
VALUES (11), (22), (33) INTERSECT VALUES (55), (33), (33);
4 922
Трюк дня. Простые числа. Решение.
Простое число - натуральное (целое положительное) число, имеющее ровно два различных натуральных делителя — единицу и самого себя.
Для начала создадим набор чисел от 2 до 1000 с помощью функции
generate_series.
Затем с помощью NOT EXISTS (которое можно, модифицировав, заменить на JOIN) мы соединяем таблицу саму на себя и затем выбираем только те значения, для которых ни одно деление на меньшее число не дает остаток 0.
WITH x AS (
SELECT * FROM generate_series( 2, 1000 ) x
)
SELECT x.x
FROM x
WHERE NOT EXISTS (
SELECT 1 FROM x y
WHERE x.x > y.x AND x.x % y.x = 0
);
#tips4 922
Трюк дня. Простые числа
Напишите PostgreSQL-запрос, который возвратит простые числа от 2 до 1000.
Решение будет вечером.
#tips
4 922
Tips & Tricks. Работа со столбцами AUTO_INCREMENT в MySQL
В этой статье мы расскажем, для чего используется AUTO_INCREMENT и как им управлять.
#sql
Читать статью
4 922
Ответ на #вопрос11
Учитывая, что
NULL в SQL — просто отсутствие значения, то все значения NULL при группировке попадают в одну группу. Например, пусть есть таблица:
name score
Alex 5
Sam 1
Sam 11
NULL 4
NULL 3
Тогда запрос
SELECT name, SUM (score) AS sc FROM table GROUP BY name;выдаст: name sc Alex 5 Sam 12 NULL 7 #вопросы #собеседование
4 922
Какой из перечисленных ниже PostgreSQL запросов вернет результат как на картинке выше?
4 922
Трюк дня. Ранг без 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
#tips4 922
Трюк дня. Ранг без
RANK()
Напишите SQL-запрос, который будет ранжировать scores из таблицы scores без использования оконной функции. Одинаковые scores должны иметь одинаковый ранг. Ранг, следующий за одинаковыми scores, должен быть следущий целым числом (см. ожидаемый результат на картинке выше).
Решение будет вечером.
#tips4 922
Tips & Tricks. Очистка raw data в SQL
В этой статье мы рассмотрим несколько примеров, как очистить реальные данные так, чтобы можно было их использовать для дальнейшей работы с ними.
#sql
Читать статью
4 922
Ответ на #вопрос10
Да, отработает. В SQL допускается перечисление не всех полей в разделе
SELECT, если мы группируем по нескольким полям.
В данном примере группировка выполняется по двум полям, а выводится на экран одно поле. А вот наоборот сделать уже нельзя.
#вопросы #собеседование4 922
#вопрос10
Отработает ли данный запрос или выдаст ошибку:
SELECT field1 FROM table GROUP BY field1, field2;#вопросы #собеседование
4 922
Какой результат вернет следующий PostgreSQL/MySQL запрос:
SELECT GREATEST (6.62, - 8, '82') ;
4 922
Трюк дня. Сравнение с предыдущим. Решение.
Решение: использование
DATEDIFF
DATEDIFF: эта функция вычисляет разницу между двумя датами. Она используется для того, чтобы обеспечить сравнение именно «сегодняшних» и «вчерашних» температур.
Если сформулировать обычным языком следующий запрос, то окажется, что он выражает следующую идею: нужно выбрать такие идентификаторы, чтобы температура, соответствующая представляемым ими датам, была бы больше, чем температура на «вчерашние» по отношению к ним даты.
SELECT DISTINCT a.Id FROM Weather a, Weather b WHERE a.Temperature > b.Temperature AND DATEDIFF(a.Recorddate, b.Recorddate) = 1#tips
4 922
Трюк дня. Сравнение с предыдущим
Напишите SQL-запрос, который находит в таблице
weather все даты (идентификаторы дат), когда температура была бы выше температуры на предшествующие им даты. То есть, нас интересуют даты, в которые «сегодняшняя» температура выше «вчерашней».
Решение будет вечером.
#tips4 922
Решение сегодняшней задачи на логику.
1. Включить свет в начальном вагоне, в котором вы находитесь, если он ещё не горит.
2. Затем идти в одну любую сторону до тех пор, пока не встретите вагон с работающим освещением, при этом обязательно считать пройденные вагоны.
3. Выключить в найденном вагоне свет и идти обратно к начальному. Если в нём свет всё ещё горит, то повторить операцию. Если же нет, значит вы прошли полный круг и знаете ответ.
#логика
