SQL Pro
5.08K subscribers
142 photos
2 videos
10 files
127 links
SQL Pro - всё об SQL
Реклама: @anothertechrock

Контент канала:
1. Разбор вопросов с собеседований
2. Трюки SQL
3. Видео
4. Тесты
5. Задачи на логику
6. Юмор
Download Telegram
Трюк дня. Как узнать размер базы данных PostgreSQL одной командой, не используя скриптов?

SELECT pg_size_pretty( pg_database_size( 'sample_db' ) );

pg_size_pretty
----------------
36 GB

Также можно посмотреть и размер таблицы (с индексами):

SELECT pg_size_pretty( pg_total_relation_size( 'table' ) );

pg_size_pretty
----------------
6341 MB

Если нужно без индексов, тогда запрос другой:

# SELECT pg_size_pretty( pg_relation_size( 'table' ) );

pg_size_pretty
----------------
1341 MB

#tips
👍11
#вопрос55

Как скопировать данные из одной таблицы в другую?

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

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

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

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

Какая цифра чаще всего встречается между числами от 1 до 1000 включительно?

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

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

Самая распространенная цифра — 1! Вы поняли, почему? Каждое число от 1 до 9 встречается ровно одинаковое количество раз в каждых десяти числах. Но поскольку было включено число 1000, цифра 1 появляется в числовом ряде на один раз больше.

Итак, всего цифра 1 встречается 301 раз, в то время как все остальные числа встречаются в ряде по 300 раз.

#логика
2🔥1
#вопрос56

Предположим, есть две таблицы Emp (ID, name, DeptId), Dept(ID, name). В таблице Emp 10 записей, а в Dept – 5. Сколько строк будет отображаться в результате следующего SQL-запроса:

Select * From Emp, Dept

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

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

Запрос выведет 50 строк, т. к. тут перекрестное объединение, являющееся значением по умолчанию, когда условие WHERE, отсутствует.

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

Есть
2 пустых ведра: первое объемом 5 л, второе - 3 л. Как с их помощью отмерить 4 литра воды?

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

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

Сперва наполните пятилитровое ведро. Далее перелейте из него воду в трехлитровое так, чтобы в пятилитровом осталось 2 л воды (полностью заполнив трехлитровое). Вылейте из меньшего ведра всю воду и перелейте в него оставшиеся в большем 2 л. Снова наполните пятилитровое и перелейте один литр в трехлитровое (оно как раз заполнится): так в большем ведре останется 4 л воды.

#логика
👍7
Трюк дня. Что такое миграции и как создать миграции бд postgresql?

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

#tips
👍2
Трюк дня. Что такое миграции и как создать миграции бд postgresql?

Миграции - инструмент для перевода базы из одного состояния в другое. Своего рода git для бд.

Обычно когда просят написать миграцию, то имеют ввиду SQL-файл, выполнение которого переведёт схему базы в новое состояние. То есть файл с инструкциями типа create table, alter table и тд. Часто необходим и второй файл - файл отката, который вернёт всё к исходному состоянию.

Так как последовательность применения таких файлов очень важана (например, в первой миграции создали таблицу, а во второй модифицируем её), то имена файлов содержат возрастающий идентификатор миграции. Часто этот идентификатор - просто дата и время миграции:

migrations/
- 20220728102400_create-foo-table_up.sql
- 20220728102400_create-foo-table_down.sql

Инструмент миграции применяет SQL-файл и помечает (обычно в той же базе данных, в своей служебной табличке), что миграция с этим идентификатором уже применена. При повторном запуске применённые миграции будут пропущены. Соответственно применённую миграцию можно откатить, найдя down-файл с нужным идентификатором.

#tips
👍9🔥2🤔1🥱1
#вопрос57

Напишите SQL-запрос, с применением UNION ALL (не UNION), использующий WHERE для устранения дубликатов.

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

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

SELECT * FROM mytable WHERE a=X UNION ALL SELECT * FROM mytable WHERE b=Y AND a!=X

Ключевое место – AND a!=X. Это дает вам все плюшки UNION DISTINCT, избегая при этом просадки производительности.

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

Книга содержит N страниц, которые пронумерованы стандартно: от 1 до N. Если сложить количество цифр (не сами числа), что содержатся в каждом номере страницы, выйдет 1095. Так сколько в книге страниц?

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

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

Каждый номер страницы имеет цифру на месте единицы, так что есть N цифр, расположенных на месте единицы. А вот после 9 начинаются двухзначные числа, и нам нужно добавить N-9 цифр. То же самое с трехзначными, которые начинаются после 99: добавляем N-99 цифр. Продолжать нет смысла, так как сумма не предполагает более 999 страниц. Получаем следующую формулу:

N + (N-9) + (N-99) = 1095

Далее просто решаем:

3N - 108 = 1095

3N = 1203

N = 401

Итого 401 страница.

#логика
👍42🤯2