SQL и БД Learning – Telegram
SQL и БД Learning
10.2K subscribers
797 photos
9 videos
22 files
445 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
#Вопросы_с_собеседования

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

Ответ на картинке.
👍18
Сработает ли данный запрос?

Ответ:
Запрос не отработает. Конструкция HAVING не может использоваться при удалении строк. Она используется только при операции SELECT и чаще всего вместе с группировкой строк (GROUP BY). Эта задачка рассчитана на новичков. Опытный SQLщик сразу ответит на вопрос.
👍23
Сработает ли данный запрос?

Ответ:
Вопрос нацелен на то, чтобы сбить с толку кандидата. На практике при операции join в большинстве случаев выполняется жесткое сопоставление одного поля в одной таблице с другим полем во второй. Например, t.field1 = tt.field1. В данном же случае запрос отработает.

В этом примере выполняется сначала декартово произведение всех строк одной таблице со всем строками другой и затем применяется условие, что tt.field1 = 1. Такое написание допустимо, хотя и редко где применяется. Неопытные data-инженеры часто впадают в ступор на этой задаче.
👍13
#Вопросы_с_собеседования

Добавьте в таблицу table1 поле status

Ответ на картинке.
👍9
Узнаем кол-во всех ячеек в таблице с помощью SQL

Для выполнения этой задачи вам понадобится использовать стандартный SQL запрос COUNT(*).

Замените your_table_name на фактическое имя вашей таблицы. Результатом выполнения этого запроса будет одна строка с одним столбцом cell_count, содержащим общее количество ячеек в таблице.
👍13😁5
#Вопросы_с_собеседования

При выборке из таблицы workers создайте новое поле res, в котором будет строка 'eee'.

Ответ на картинке.
👍10
#Вопросы_с_собеседования

Даны две таблицы: таблица category и таблица sub_category с полями id и name. Достаньте одним запросом названия категорий и подкатегорий.

Ответ на картинке.
👍10😁1
#Вопросы_с_собеседования

Как вставить нескольких строк одним запросом?

В данном примере мы одним SQL-запросом добавим 3 записи.
👍18🎄1
Узнаем дату последнего редактирования БД с поомщью SQL

Здесь мы используем системную таблицу sys.databases, которая содержит информацию о всех базах данных в SQL Server. Колонка modify_date указывает на дату и время последнего изменения базы данных.
👍19
Соединяем 3 таблицы по одному одинаковому столбцу

В этом примере используется оператор JOIN для объединения таблицы table1 со столбцом column_name таблицы table2, а также с таблицей table3. Здесь column_name - это общий столбец, по которому происходит соединение таблиц.
👍15🔥1
#Вопросы_с_собеседования

Напишите SQL-запрос, который найдет суммарное количество заказов и общую сумму продаж для каждого месяца за последние 6 месяцев, и отобразит результаты только для тех месяцев, в которых было совершено более 100 заказов?

В этом примере мы используем функцию DATE_TRUNC для округления даты до месяца. Затем мы считаем общее количество заказов с помощью функции COUNT и общую сумму продаж с помощью функции SUM. Затем мы используем выражение HAVING для фильтрации только тех месяцев, где количество заказов превышает 100. Наконец, мы сортируем результаты по месяцам с помощью выражения ORDER BY.
👍12❤‍🔥1
#Вопросы_с_собеседования

При выборке из таблицы workers получите последние 5 символов поля denoscription

Ответ на картинке.
👍13❤‍🔥2
#Вопросы_с_собеседования

Дана таблица tbl и поля nmbr со следующими значениями: 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1

Напишите запрос, чтобы установить 2 вместо 0 и установить 3 вместо 1.
👍15
#Вопросы_с_собеседования

Выберите все записи, где первая буква City начинается с любой буквы от "a" до "f"

Ответ на картинке.
👍24🎄3
#Вопросы_с_собеседования

В чем разница между командами Delete, Truncate и Drop?

• Команда Delete — это команда DML , он используется для удаления строк из таблицы. Его можно откатить.
Truncate — это команда DDL, она используется для удаления всех строк из таблицы и освобождения пространства, содержащего таблицу. Ее нельзя откатить.
Drop — это команда DDL, она удаляет все данные вместе со структурой таблицы (в отличие от команды truncate, которая удаляет только строки). Все строки, индексы и привилегии таблиц также будут удалены.
👍16😁1
#Вопросы_с_собеседования

Для каких числовых типов недопустимо использовать операции сложения/вычитания?

Ответ:
В качестве операндов операций сложения и вычитания нельзя использовать числовой тип BIT. BIT - целочисленный тип данных, который может принимать значения 1, 0 или NULL.
👍15
Поиск значений в таблице, которые не совпадают с другой таблицей

Для выполнения поиска значений в таблице, которые не совпадают с другой таблицей в SQL, можно использовать операторы JOIN, NOT IN и NOT EXISTS.

1. JOIN - используется для объединения двух таблиц по заданному условию. Для поиска значений, которые не совпадают, можно использовать LEFT JOIN или RIGHT JOIN, а затем выбрать строки с NULL значениями в столбцах таблицы-присоединения.

2. NOT IN - спользуется для выбора значений из одной таблицы, которые не содержатся в другой таблице.

3. NOT EXISTS - используется для проверки наличия значений в подзапросе и выбора строк, которые не имеют соответствия в другой таблице.
👍18🔥2
#Вопросы_с_собеседования

Выберите из таблицы workers записи с id равным 1, 2, 3, 7, 9, и логином, равным 'user', 'admin', 'ivan' и зарплатой больше 300

Ответ на картинке.
👍17😁3
#Вопросы_с_собеседования

Для каких числовых типов недопустимо использовать операции сложения/вычитания?

Ответ:
В качестве операндов операций сложения и вычитания нельзя использовать числовой тип BIT. BIT - целочисленный тип данных, который может принимать значения 1, 0 или NULL.
👍9
Почему данный код выведет ошибку?

SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
WHERE city_m = 'EU:Oslo';

Код выдаст ошибку, так как в данном случае alias нельзя использовать в операторе WHERE.

Порядок выполнения упомянутого SELECT запроса следующий:
1. FROM
2. WHERE
3. SELECT

Соответственно при выполнении команды WHERE, alias, задаваемый в SELECT еще неизвестен.

Для PostgreSQL или MySQL данную проблему можно решить, например, следующим образом:

```WITH ct AS (
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
)
SELECT ct.*
FROM ct
WHERE ct.city_m = 'EU:Oslo';
👍11