SQLpedia | Базы данных
6.31K subscribers
162 photos
68 videos
1 file
652 links
Тут вы найдете всё, что связано с базами данных и sql, как для начинающих, так и для бывалых специалистов.

Сотрудничество: @Heykman
Download Telegram
Алоха, коллеги! Запускаем рубрику #fromInterviewWithLove!

Сегодня будет дана задача по SQL для начинающих специалистов.

Задача: В базе данных хранятся данные о продажах продуктов в разных магазинах. Необходимо вывести список магазинов, в которых были проданы все виды товаров. Таблица sales содержит следующие поля:
- id - уникальный идентификатор продажи;
- store - название магазина;
- product - название продукта.


Решение SQL запросом:
SELECT store
FROM sales
GROUP BY store
HAVING COUNT(DISTINCT product) = (SELECT COUNT(DISTINCT product) FROM sales);

Данный запрос группирует данные по названию магазина и находит количество уникальных продуктов, проданных в каждом магазине. Затем он сравнивает это количество с общим числом уникальных продуктов в таблице sales. Если количество уникальных продуктов в магазине равно общему количеству уникальных продуктов в таблице, значит все продукты были проданы в данном магазине. Результат запроса - список магазинов, в которых были проданы все виды товаров.


SQLpedia
👍34😱96😢2
Алоха, коллеги! Продолжаем рубрику #fromInterviewWithLove. На этот раз нужно решить задачу повышенной сложности.

В базе данных есть таблица "orders" с полями "id" (уникальный идентификатор заказа), "customer_id" (уникальный идентификатор клиента, который сделал заказ), "total_price" (общая стоимость заказа) и "created_at" (дата создания заказа). Необходимо найти все заказы, сделанные клиентом, сумма которых превышает среднюю сумму заказов всех клиентов. Результат должен быть отсортирован по дате создания заказа в порядке убывания.

Решение:
SELECT orders.id, orders.total_price, orders.created_at
FROM orders
WHERE orders.customer_id IN (
SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING AVG(total_price) < (
SELECT AVG(total_price)
FROM orders
)
)
ORDER BY orders.created_at DESC;


SQLpedia
🔥14👍6😢6😱2
Алоха, коллеги!

Сегодня вопрос из рубрики #fromInterviewWithLove

Дана таблица "Студенты" с полями "Имя", "Фамилия", "Возраст" и "Группа". Необходимо вывести список уникальных групп студентов и количество студентов в каждой группе, отсортированный по возрастанию названия группы.
Для решения этой задачи нужно написать следующий SQL-запрос:

SELECT Группа, COUNT(*) AS Количество_студентов
FROM Студенты
GROUP BY Группа
ORDER BY Группа ASC;

Этот запрос выбирает из таблицы "Студенты" уникальные группы студентов и вычисляет количество студентов в каждой группе. Затем он сортирует результат по возрастанию названия группы. Результатом запроса будет список уникальных групп студентов с количеством студентов в каждой группе.

Небольшая подсказка для новичков👇
Нужно понимать, как работать с агрегатными функциями, такими как COUNT, и как использовать оператор DISTINCT для выбора уникальных значений.
🔥6😱5😁2🤩2👍1
Алоха, коллеги!
Сегодня дадим вам задачу на логику из нашей рубрики #fromInterviewWithLove

Представьте себе замкнутую по окружности железную дорогу. По ней едет поезд, последний вагон которого скреплён с первым так, что внутри можно свободно перемещаться между вагонами. Вы оказались в одном случайном вагоне и ваша задача — подсчитать их общее количество. В каждом вагоне можно включать или выключать свет, но начальное положение переключателей случайное и заранее неизвестно.

Все вагоны внутри выглядят строго одинаково, окна закрыты так, что невозможно посмотреть наружу, движение поезда равномерное. Помечать вагоны как-либо, кроме включения или выключения света, нельзя. Количество вагонов конечно.

В этой задаче есть 2 решения:

Решение 1
Вам нужно включить свет в начальном вагоне, в котором вы находитесь, если он ещё не горит. Затем пойти в одну любую сторону до тех пор, пока не встретите вагон с работающим освещением, при этом обязательно считать пройденные вагоны. Выключаете в найденном вагоне свет и идёте обратно к начальному. Если в нём свет всё ещё горит, то повторяете операцию. Если же нет, значит вы прошли полный круг и знаете ответ.

Решение2
С таким же успехом можно, например, ходить по сторонам от начального вагона на равные расстояния, постепенно их увеличивая, и инвертировать в них свет. То есть если считать, что сначала вы в вагоне с номером 0, то ходить надо в -1, 1, -2, 2, -3, 3 и так далее. Если при этом запоминать состояние самого дальнего вагона, то при повторном прохождении мимо него вы заметите изменившийся свет, если круг замкнётся. А зная длину пути в обе стороны, вы легко вычислите общее количество вагонов.


SQLpedia
🔥83
Алоха, коллеги!
Сегодня дадим вам задачу на логику из нашей рубрики #fromInterviewWithLove

Представьте себе замкнутую по окружности железную дорогу. По ней едет поезд, последний вагон которого скреплён с первым так, что внутри можно свободно перемещаться между вагонами. Вы оказались в одном случайном вагоне и ваша задача — подсчитать их общее количество. В каждом вагоне можно включать или выключать свет, но начальное положение переключателей случайное и заранее неизвестно.

Все вагоны внутри выглядят строго одинаково, окна закрыты так, что невозможно посмотреть наружу, движение поезда равномерное. Помечать вагоны как-либо, кроме включения или выключения света, нельзя. Количество вагонов конечно.

В этой задаче есть 2 решения:

Решение 1
Вам нужно включить свет в начальном вагоне, в котором вы находитесь, если он ещё не горит. Затем пойти в одну любую сторону до тех пор, пока не встретите вагон с работающим освещением, при этом обязательно считать пройденные вагоны. Выключаете в найденном вагоне свет и идёте обратно к начальному. Если в нём свет всё ещё горит, то повторяете операцию. Если же нет, значит вы прошли полный круг и знаете ответ.

Решение2
С таким же успехом можно, например, ходить по сторонам от начального вагона на равные расстояния, постепенно их увеличивая, и инвертировать в них свет. То есть если считать, что сначала вы в вагоне с номером 0, то ходить надо в -1, 1, -2, 2, -3, 3 и так далее. Если при этом запоминать состояние самого дальнего вагона, то при повторном прохождении мимо него вы заметите изменившийся свет, если круг замкнётся. А зная длину пути в обе стороны, вы легко вычислите общее количество вагонов.


BApedia
👍9🔥1