SQL и Базы Данных – Telegram
SQL и Базы Данных
4.2K subscribers
165 photos
5 videos
183 links
Задачи по базам данных и SQL

Основы языка SQL, задачи и решения к ним.

Админ: @anothertechrock
Download Telegram
Вопрос с собеседования.

Что вы знаете о функции OVERLAY() в PostgreSQL?
👍2
Ответ на "Что вы знаете о функции OVERLAY() в PostgreSQL?"

Функция OVERLAY() заменяет часть строки на другую подстроку, начиная с заданной позиции:
OVERLAY(main_string PLACING replacing_string FROM int [FOR int]);
main_string -
строка, которую изменяем.
replacing_string - подстрока, которую вставляем в main_string.
FROM int - позиция, с которой начнётся замена.
FOR int - количество заменяемых символов. Необязательно.

Например:

SELECT OVERLAY('who Pro' PLACING 'SQL' FROM 1);
👍8
Какие из операторов SQL могут быть использованы для выполнения CRUD (Create, Read, Update, Delete) операций над данными?

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

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

У строителя есть 8 кирпичей, 7 из которых имеют одинаковый вес, а один — тяжелее. Как строителю выявить бракованный кирпич с помощью весов всего за два взвешивания?

Решение будет завтра.
👍2
Решение вчерашней задачи на логику и мышление.

Все нужно делать поэтапно:

1. Разделить 8 кирпичей на три стопки по 3, 3 и 2 штуки.
2. Взвесить 2 стопки, в которых по 3 кирпича.
3. Если они уравновесились, значит взвесить стопку из двух кирпичей и найти бракованный.
4. Если не уравновесились, то взять 3 кирпича из стопки, которая перевесила и разделить на 3 штуки.
5. Положить по одному на весы. Если один перевесил — он бракованный, если уравновесились, значит, тяжелее всех тот, что остался в стороне.

#логика
👍16
Трюк дня. SQL - Сортировка зеркальных строк

Есть БД со следующей структурой:
id team1      team2
1 spartak csk
2 csk spartak
3 real spartak
4 csk real

Нужно написать запрос что-бы узнать сколько раз команды играли между собой в виде:
game          num
spartak-csk 2
real-spartak 1
csk-real 1

Решение будет завтра.

#tips
👍1👏1
Чем NULL отличается от 0

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

#вопросы #собеседование
0 - это число.

NULL - это не число, а также NULL не является значением пустой строки. NULL используется для указания того, что данные отсутствуют, неизвестны, неприменимы. NULL не равен ничему, даже другому NULL.

#вопросы #собеседование
👍5🏆3
Вопрос с собеседования.

В чём разница между UNION и UNION ALL?
Ответ на "В чём разница между UNION и UNION ALL?".

Оба UNION и UNION ALL объединяют результат двух разных SQL запросов.

Они отличаются тем, как они обрабатывают дубликаты:

UNION выполняет DISTINCT в результирующем наборе, исключая любые повторяющиеся строки.

UNION ALL не удаляет дубликаты, и поэтому он быстрее, чем UNION.
🔥6
Есть библиотека с книгами. Оперируя сущностями «Книга» и «Автор», Вы хотите сохранить реестр своей библиотеки в БД. Сколько таблиц понадобится для эффективного хранения такой структуры в 3-й нормальной форме?
Anonymous Quiz
5%
1
27%
2
55%
3
3%
4
10%
Узнать ответ
Трюк дня. Получить id покупки с максимальной value для каждого customer.

Например, есть таблица:

id customer value
1 Alex 5
2 Sam 1
3 Sam 3

В результате нужно получить следующее:

id customer value
1 Alex 5
3 Sam 3

В PostgreSQL можно использовать оператор DISTINCT ON:


SELECT
DISTINCT ON(customer)
id,
customer,
value
FROM table
ORDER BY customer, value
DESC, id


#tips
А какие варианты решения вы знаете?
👍3🔥2
Трюк дня. Найти записи с граничными значениями без соединения таблицы на саму себя

Один из вариантов - это сначала найти максимальное значение для каждого ID с помощью GROUP BY, и затем соединить таблицу с самой собой по ID и max значению.
Но есть способ лучше:

SELECT
dat2.*
FROM
(
SELECT
dat.*,
CASE WHEN (num = MAX(num) OVER (PARTITION BY id)) THEN 'y' ELSE 'n' END AS max_num
FROM current_table dat
) dat2
WHERE max_num = 'y'

#tips
👍9💩4
Media is too big
VIEW IN TELEGRAM
Полезные функции и операторы SQL

В этом видео автор рассматривает функции и операторы SQL, которые наиболее полезны в виду их разнообразного применения.

00:00 Вступление
00:24 Работа с полями таблиц в SQL
00:57 Создать таблицу для работы
01:09 Добавить поле в таблицу
01:34 Узнать тип поля
01:48 Переместить поле
02:22 Изменить тип поля
03:19 Переименовать поле
03:37 Удалить поле
03:58 Форматирование записей
05:55 Временные таблицы в SQL

Смотреть это видео на youtube: youtu.be/SglQ7CCkkTw
👍5
Трюк дня. Удаление лишних пробелов в строке с использованием REGEX.

Предположим, есть строка, содержащая такой текст:
This is a test string


Требуется удалить из строки лишние пробелы.


Решение:
Используйте функцию REGEXP_REPLACE:

SELECT
REGEXP_REPLACE('This is a test string','( ){2,}',' ');


#tips
👍12
Вопрос с собеседования

Напишите запрос для получения количества полных месяцев (результат должен быть INTEGER) между двумя TIMESTAMPS: date1 и date2.

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

ABS (TIMESTAMPDIFF (MONTH, date1, date2));

TIMESTAMPDIFF возвращает разницу date2 - date1 в полных месяцах. Поэтому, например,
(MONTH, '2022-01-05 00:00:00',
'2022-05-07 00:00:00') = 4,
а
(MONTH, '2022-01-05 00:00:00',
'2022-05-04 00:00:00') = 3.

Функция ABS возвращает модуль числа, то есть преобразует число из отрицательного в положительное. Охватывает те случаи, когда date1 > date2.

#вопросы #собеседование
3👍3
Трюк дня. Найти второе место по зарплате

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

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

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

#tips