SQL решает @sql_reshaet Channel on Telegram

SQL решает

@sql_reshaet


Знание SQL, может являться решающим, при прохождении собеседования.

В этом канале, материалы, квизы, задачи и решение тестовых заданий по SQL.

Сотрудничество: @it_edstack

Никакой политки, только ИТ!
No politics, just IT!

SQL решает (Russian)

Знание SQL, может являться решающим, при прохождении собеседования. В этом канале, материалы, квизы, задачи и решение тестовых заданий по SQL. Если вы хотите успешно справиться с интервью или улучшить свои навыки в области баз данных, то этот канал идеально подходит для вас! SQL решает предлагает полезные материалы и задания, которые помогут вам разобраться в SQL, научиться решать задачи и быть увереннее на собеседованиях. Поддерживайте общение на тему IT и улучшайте свои навыки вместе с сообществом. Присоединяйтесь к нашему каналу уже сегодня! Сотрудничество: @it_edstack. Никакой политики, только IT! No politics, just IT!

SQL решает

10 Dec, 09:00


Задача #67

Таблицы: Customers, Orders, OrderDetails;

В базе есть запись о клиенте, который совершил 5 заказов одного и того же продукта.
Написать запрос, который выведет имя данного клиента (CustomerName), а также наименование продукта (ProductName).


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.


Вариант решения:
SELECT CustomerName, Products.ProductName
FROM Customers
JOIN Orders ON Customers.CustomerID = Orders.CustomerID
JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID
JOIN Products ON OrderDetails.ProductID = Products.ProductID
GROUP BY Customers.CustomerName, Products.ProductID HAVING COUNT(Products.ProductID)=5;


#задача

SQL решает

15 Oct, 08:00


Задача #66

Разминаемся😎

Таблицы: Customers, Orders;

Найти покупателей, которые сделали более 5 заказов, и чьи имена начинаются с буквы 'A'.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.


Вариант решения:
SELECT c.CustomerID, c.CustomerName, COUNT(o.OrderID) AS OrderCount
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE c.CustomerName LIKE 'A%'
GROUP BY c.CustomerID, c.CustomerName
HAVING COUNT(o.OrderID) > 5;


#задача

SQL решает

26 Aug, 06:32


Задача #65

Простая задача, для тех, кто хочет вспомнить, либо начать разбираться с Common Table Expressions (CTE).

Дана таблица Employees. Используя CTE, выбрать из таблицы значения следующих полей: employee_id, first_name, last_name, salary, для тех сотрудников, чья зарплата выше 5000.

Базовая структура CTE в помощь:
WITH cte_name
AS
(
-- CTE Query
SELECT ...
)
SELECT ...
FROM cte_name;



Написать и выполнить запрос можно здесь
(Просто дописываем свой запрос ниже имеющихся запросов, в поле SQL code, и жмем Run SQL code)

Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

Вариант решения:
WITH HighSalaryEmployees AS (
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE salary > 5000
)
SELECT *
FROM HighSalaryEmployees;


#задача

SQL решает

30 Jul, 06:32


Задача #64

Таблица: Customers;

Написать запрос, который вернет значение самого длинного CustomerName, а также посчитает кол-во входящих в него символов, и выведет в столбец с именем Length.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

Вариант решения:
SELECT CustomerName, MAX(Length(CustomerName)) AS Length from Customers WHERE Length(CustomerName)=(SELECT MAX(Length(CustomerName)) FROM Customers);

#задача

SQL решает

24 Jun, 06:32


Задача #63

Таблица: Products;

Написать запрос, который вернет разность между значением количества продуктов, цена которых выше средней, и значением количества продуктов, цена которых ниже средней. Вывести полученный результат в столбец с именем AVG Price Diff.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

Вариант решения:
SELECT COUNT(ProductName) -
(SELECT COUNT(ProductName)
FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products)) AS "AVG Price Diff"
FROM Products
WHERE Price < (SELECT AVG(Price) FROM Products);


#задача

SQL решает

29 May, 06:29


Задача #62

Таблица: Customers;

Написать запрос, который выведет имя клиента (CustomerName), у которого нечетный айдишник, но чье имя (значение поля CustomerName), содержит четное кол-во символов. Кроме того, в отличии от всех остальных записей, отвечающих этим условиям, имя этого кастомера идет последним в списке, отсортированном в алфавитном порядке. Вывести значение поля CustomerName, для записи, которая соответствует всем изложенным критериям.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

Вариант решения:
SELECT CustomerName FROM Customers WHERE (CustomerID % 2) <> 0 AND (LENGTH(CustomerName) % 2) = 0
ORDER BY CustomerName DESC
LIMIT 1;


#задача

SQL решает

21 May, 06:33


Задача #61

Таблицы: OrderDetails, Orders;

Написать запрос, который вернет среднее количество продуктов в заказе. Вывести результат в столбец с именем: AverageProductsPerOrder. Округлить значение до одного знака после запятой.



Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

Вариант решения:
SELECT ROUND((AVG(sum_per_order)), 1) AS AverageProductsPerOrder
FROM (SELECT SUM(Quantity) AS sum_per_order
FROM OrderDetails
GROUP BY OrderID) AS sum_tab;


#задача

SQL решает

01 May, 06:32


Задача #60

Таблица: Categories;

В этот раз, все просто😎 Написать запрос, который вернет таблицу, в точности повторяющую ту, что приведена на прикрепленном изображении.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

Вариант решения:
SELECT
C1.CategoryID AS CategoryID1,
(SELECT CategoryName FROM Categories WHERE CategoryID = C1.CategoryID) AS CategoryName1,
C2.CategoryID AS CategoryID2,
(SELECT CategoryName FROM Categories WHERE CategoryID = C2.CategoryID) AS CategoryName2,
C3.CategoryID AS CategoryID3,
(SELECT CategoryName FROM Categories WHERE CategoryID = C3.CategoryID) AS CategoryName3
FROM
(SELECT DISTINCT CategoryID FROM Categories) AS C1
LEFT JOIN
(SELECT DISTINCT CategoryID FROM Categories) AS C2 ON C2.CategoryID = C1.CategoryID + 1
LEFT JOIN
(SELECT DISTINCT CategoryID FROM Categories) AS C3 ON C3.CategoryID = C2.CategoryID + 1
ORDER BY
CategoryID1, CategoryID2, CategoryID3;


#задача

SQL решает

15 Apr, 06:32


Задача #59

Таблицы: Customers, Orders;

Написать запрос, который выведет имя клиента (CustomerName), и количество заказов (в столбец с именем OrderCount), для того клиента, который идет третьим по количеству размещенных заказов, за все время.

Пример: Клиент А: разместил 31 заказ, клиент Б: 30 заказов, клиент В: 28 заказов. Соответственно, нам нужно имя, и кол-во заказов для клиента В.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

Вариант решения:
SELECT c.CustomerName, COUNT(*) AS OrderCount
FROM Orders o
JOIN Customers c ON o.CustomerID=c.CustomerID
GROUP BY o.CustomerID
ORDER BY OrderCount DESC
LIMIT 1 OFFSET 2;


#задача

SQL решает

29 Mar, 07:33


Задача #58

Таблицы: Customers, Orders;

Напишите SQL-запрос, для поиска клиентов (CustomerName), у которых количество заказов за период времени c 1997-01-01 по 1997-12-31, превышает среднее количество заказов всех клиентов за тот же период времени.

• Запрос должен вернуть две колонки: CustomerName, OrdersCount;

• Упорядочить записи в порядке убывания по OrdersCount;



Написать и выполнить запрос можно здесь

Глоссарий команд, здесь



Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.


Вариант решения:
SELECT c.CustomerName, COUNT(o.OrderID) AS OrdersCount
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE o.OrderDate BETWEEN '1997-01-01' AND '1997-12-31'
GROUP BY c.CustomerID
HAVING COUNT(o.OrderID) > (
SELECT AVG(OverallOrdersCount)
FROM (
SELECT COUNT(OrderID) AS OverallOrdersCount
FROM Orders
WHERE OrderDate BETWEEN '1997-01-01' AND '1997-12-31'
GROUP BY CustomerID
) AS AvgOrders
)
ORDER BY OrdersCount DESC;


#задача

SQL решает

20 Mar, 07:32


Задача #57

Таблицы: Employees, Customers, Orders;

Написать запрос, который выведет в колонку EmployeeName, имена и фамилии сотрудников (Employees), которые обрабатывали заказы более, чем для 5-ти уникальных клиентов (Customers) из Франции. Упорядочить значения EmployeeName по алфавиту.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.


Вариант решения:

SELECT DISTINCT
CONCAT(E.FirstName, " ", E.LastName) AS EmployeeName
FROM
Employees AS E
INNER JOIN Orders AS O ON E.EmployeeID = O.EmployeeID
INNER JOIN Customers AS C ON O.CustomerID = C.CustomerID
WHERE
C.Country = 'France'
GROUP BY
E.EmployeeID
HAVING
COUNT(DISTINCT C.CustomerID) > 5
ORDER BY
EmployeeName;


#задача

SQL решает

13 Mar, 07:36


Задача #56

Таблицы: Employees, Orders;

Вывести имена сотрудников (Employees), которые приняли участие в обработке более 50-ти заказов за 1997-ой год.

Результирующая таблица должна состоять из двух столбцов:
EmployeeName - должен включать имя и фамилию для каждого найденного сотрудника;
TotalOrders - суммарное кол-во заказов, для каждого найденного сотрудника, за указанный период времени.

Записи должны быть отсортированы по столбцу TotalOrders в порядке убывания.



Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

#задача

SQL решает

26 Feb, 07:32


Задача #55

Таблицы: Customers, Orders, OrderDetails, Products;

Написать запрос, который для каждого CustomerName, посчитает общую сумму $, за все сделанные заказы, с учетом количества единиц (Quantity) в заказе. Запрос должен вернуть два столбца: CustomerName и TotalOrderAmount. Упорядочить записи по TotalOrderAmount в порядке убывания.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

#задача

SQL решает

19 Feb, 07:37


Задача #54

Таблицы: Products, OrderDetails;

Написать запрос, который найдет топ-5 продуктов с самыми высокими продажами по количеству единиц (Quantity). Результирующая таблица должна содержать наименования продуктов (ProductName) и колонку TotalQuantitySold.

Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

#задача

SQL решает

07 Feb, 07:31


Задача #53

Таблица: Products;

Вывести значения полей ProductName, Unit, Price, для тех записей, в которых, имя продукта состоит, как минимум, из двух слов, а также значение цены описано в виде десятичной дроби, и к тому же, расфасовка осуществляется в бутылки, а объем измеряется в миллилитрах.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.

#задача

SQL решает

29 Jan, 07:32


Задача #52

• Написать запрос, который выведет средний чек (Products.Price), для каждого второго клиента (Customers.CustomerID), за 1997 год (Orders.OrderDate).

• Вывести CustomerID в порядке возрастания, следом вывести CustomerName, а еще, вывести среднюю цену заказанного товара за 1997 год в колонку, с псевдонимом Average Order Price.

• Значения в колонке Average Order Price, округлить до сотых.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.


#задача

SQL решает

15 Jan, 07:31


Задача #51

Таблица: Products;

Таблица Products, содержит записи о продуктах, относящихся к разным категориям (CategoryID). Написать запрос, который вернет процент самой редко-встречающейся категории продуктов, от общего количества записей.


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.


#задача

SQL решает

08 Jan, 07:32


Задача #50

Вывести список уникальных продуктов (ProductName), заказанных клиентом, под именем: LINO-Delicateses, а также наименования соответствующих категорий продуктов (CategoryName).


Написать и выполнить запрос можно здесь

Глоссарий команд, здесь


Решившим, добро пожаловать с решением в коммент.

Не забываем прикрывать готовые решения, при помощи Spoiler фичи.


#задача