SQL решает
1.8K subscribers
38 photos
77 links
Знание SQL, может являться решающим, при прохождении собеседования.

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

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

Никакой политки, только ИТ!
No politics, just IT!
Download Telegram
Какой оператор в MySQL используется для вызова ранее описанных хранимых процедур?
Anonymous Quiz
13%
INVOKE;
2%
START;
41%
EXECUTE;
6%
RUN;
38%
CALL;
👍10
Задача #64

Таблица: Customers;

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


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

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


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

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

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

#задача
🔥8
Задача #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;


#задача
👍91
Задача #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;


#задача
9👍2
Какое из приведенных требований не является частью модели ACID?
Anonymous Quiz
17%
Durability;
12%
Atomicity;
7%
Isolation;
63%
Congruency;
🔥6
Задача #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;


#задача
👍6
Задача #68

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

Написать запрос, который посчитает уникальные наименования продуктов (ProductName), которые были заказаны не за 1997 год. Вывести результат в столбец с именем Number_of_Orders.

Внимание! Ниже приведены ссылки на учебный ресурс, где можно выполнить упражнение.

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

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


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

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



Вариант решения:
SELECT COUNT(DISTINCT p.ProductName) AS Number_of_Orders
FROM Products p
JOIN OrderDetails od ON p.ProductID = od.ProductID
JOIN Orders o ON od.OrderID = o.OrderID
WHERE YEAR(o.OrderDate) <> 1997;


#задача
5
Задача #69

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

Для каждой страны, из которой есть клиенты (Customers), рассчитайте общую сумму всех продаж, то есть сколько в сумме потратили клиенты из каждой страны.

Сумму нужно вычислять как произведение количества (Quantity) и цены товара (Price) в каждом заказе.

Результат вывести в две колонки: Country, Total Sales.


Внимание! Ниже приведены ссылки на учебный ресурс, где можно выполнить упражнение.

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

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


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

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



Вариант решения:
SELECT
c.Country,
SUM(od.Quantity * p.Price) AS TotalSales
FROM Customers c
JOIN Orders o ON c.CustomerID = o.CustomerID
JOIN OrderDetails od ON o.OrderID = od.OrderID
JOIN Products p ON od.ProductID = p.ProductID
GROUP BY c.Country
ORDER BY TotalSales DESC;


#задача
🔥4👍3
Задача #70

Доброго здоровичка😎

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

Найти клиентов, которые сделали минимум 5 заказов в 1997 году и ни одного заказа в 1998. Вывести CustomerID, CustomerName и количество заказов в колонку с именем Orders1997, отсортировать по количеству заказов в порядке убывания.


Внимание! Ниже приведены ссылки на учебный ресурс, где можно выполнить упражнение.

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

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


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

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



Вариант решения:
SELECT
Orders.CustomerID, Customers.CustomerName,
COUNT(*) AS Orders1997
FROM Orders
JOIN Customers ON Orders.CustomerID = Customers.CustomerID
WHERE OrderDate >= '1997-01-01' AND OrderDate < '1998-01-01'
GROUP BY Orders.CustomerID
HAVING COUNT(*) >= 5
AND Orders.CustomerID NOT IN (
SELECT Orders.CustomerID
FROM Orders
WHERE OrderDate >= '1998-01-01' AND OrderDate < '1999-01-01'
)
ORDER BY Orders1997 DESC, Orders.CustomerID;


#задача
👍52
Задача #71

Таблицы: Suppliers, Products, Categories;

Найти поставщиков (Suppliers), которые:
- поставили минимум 3 товара с CategoryName = 'Beverages',
- и при этом не поставили ни одного товара с CategoryName = 'Seafood'.

Вывести:
- SupplierID,
- SupplierName,
- количество товаров категории Beverages в колонку BeverageProducts (использовать алиас).


Внимание! Ниже приведены ссылки на учебный ресурс, где можно выполнить упражнение.

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

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


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

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


Вариант решения:
SELECT
s.SupplierID,
s.SupplierName,
COUNT(*) AS BeverageProducts
FROM Suppliers s
JOIN Products p ON p.SupplierID = s.SupplierID
JOIN Categories c ON c.CategoryID = p.CategoryID
WHERE c.CategoryName = 'Beverages'
GROUP BY s.SupplierID, s.SupplierName
HAVING COUNT(*) >= 3
AND s.SupplierID NOT IN (
SELECT p2.SupplierID
FROM Products p2
JOIN Categories c2 ON c2.CategoryID = p2.CategoryID
WHERE c2.CategoryName = 'Seafood'
);


#задача
3
SQL решает
Задача #71 Таблицы: Suppliers, Products, Categories; Найти поставщиков (Suppliers), которые: - поставили минимум 3 товара с CategoryName = 'Beverages', - и при этом не поставили ни одного товара с CategoryName = 'Seafood'. Вывести: - SupplierID, - SupplierName…
Задача #72

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

Написать запрос, который выведет имена клиентов (CustomerName) и имена сотрудников (EmployeeName), которые обрабатывали заказы этих клиентов. Результаты отсортировать по имени клиента.

Вывести: CustomerName, EmployeeName.


Внимание! Ниже приведены ссылки на учебный ресурс, где можно выполнить упражнение.

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

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

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


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


Вариант решения:
SELECT
c.CustomerName,
CONCAT(e.FirstName, ' ', e.LastName) AS EmployeeName
FROM (
SELECT DISTINCT
CustomerID,
EmployeeID
FROM Orders
) o
JOIN Customers c
ON c.CustomerID = o.CustomerID
JOIN Employees e
ON e.EmployeeID = o.EmployeeID
ORDER BY
c.CustomerName;

#задача
🔥42
Задача #73

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

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

Вывести: CustomerName, TotalQuantity.


Внимание! Ниже приведены ссылки на учебный ресурс, где можно выполнить упражнение.


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

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


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

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


Вариант решения:
SELECT
c.CustomerName,
SUM(od.Quantity) AS TotalQuantity
FROM Customers c
JOIN Orders o
ON c.CustomerID = o.CustomerID
JOIN OrderDetails od
ON o.OrderID = od.OrderID
JOIN Products p
ON od.ProductID = p.ProductID
GROUP BY c.CustomerID, c.CustomerName
HAVING SUM(od.Quantity * p.Price) > 1000;


#задача
2