feat: lab 12
Advanced SQL Quality Check / Lint SQL Scripts (push) Failing after 16s

This commit is contained in:
Vitalii Litvinchuk
2026-05-05 11:14:57 +03:00
parent fa7c5620a3
commit 9884d8e5af
3 changed files with 564 additions and 0 deletions
+128
View File
@@ -0,0 +1,128 @@
use Lucky_Shrub;
###############################################
############### Завдання #################
###############################################
################################################
############### Завдання 1 #################
Для того, щоб дізнатися, скільки замовлень було розміщено у 2022 році клієнтами з ідентифікаторами
Cl1, Cl2 і Cl3 було створено наступний запит:
SELECT CONCAT(
"Cl1: ", COUNT(OrderID), " orders"
) AS "Total number of orders"
FROM Orders
WHERE
YEAR(Date) = 2022
AND ClientID = "Cl1"
UNION
SELECT CONCAT(
"Cl2: ", COUNT(OrderID), " orders"
)
FROM Orders
WHERE
YEAR(Date) = 2022
AND ClientID = "Cl2"
UNION
SELECT CONCAT(
"Cl3: ", COUNT(OrderID), " orders"
)
FROM Orders
WHERE
YEAR(Date) = 2022
AND ClientID = "Cl3";
--------------------------------------
1. Оптимізуйте даний запит із використанням загальних табличних виразів (CTE)
WITH
CTE1 AS (
SELECT CONCAT(
"Cl1: ", COUNT(OrderID), " orders"
) AS "Total number of orders"
FROM Orders
WHERE
YEAR(Date) = 2022
AND ClientID = "Cl1"
),
CTE2 AS (
SELECT CONCAT(
"Cl2: ", COUNT(OrderID), " orders"
)
FROM Orders
WHERE
YEAR(Date) = 2022
AND ClientID = "Cl2"
),
CTE3 AS (
SELECT CONCAT(
"Cl3: ", COUNT(OrderID), " orders"
)
FROM Orders
WHERE
YEAR(Date) = 2022
AND ClientID = "Cl3"
)
SELECT *
FROM CTE1
UNION
SELECT *
FROM CTE2
UNION
SELECT *
FROM CTE3;
################################################
############### Завдання 2 #################
--------------------------------------
1. Створіть підготовлений запит з назвою GetOrderDetail.
Підготовлений запит має приймати два вхідні аргументи: значення ClientID і значення року.
Вибірка має повернути ID замовлення, кількість, вартість замовлення та дату замовлення з таблиці Orders.
select * from Orders;
prepare GetOrderDetail
from 'SELECT OrderID, Quantity, Cost, Date FROM Orders WHERE ClientID = ? AND YEAR(Date) = ?';
set @ClientID = "Cl1";
set @Year = "2022";
execute GetOrderDetail using @ClientID, @Year;
--------------------------------------
2. Здійсніть вибірку даних із використанням піготованого запиту з такими значеннми
змінних ClientID (Cl1) і 2020 рік.
CALL GetOrderDetail ('Cl1', 2020);
set @ClientID = "Cl1";
set @Year = "2020";
execute GetOrderDetail using @ClientID, @Year;
################################################
############### Завдання 3 #################
У таблиці Activity бази даних Lucky_Shrub здійснюється реєстрація інформацію про кожну угоду
у стовпці Properties у форматі JSON.
Інформацію можна переглянути з допомогою запиту:
SELECT * FROM Activity;
--------------------------------------
1. Вам потрібно вивести ID продукту, назву, ціну покупки та ціну продажу продукту,
для яких атрибут Orders у таблиці Activity набуває значення "True".
--Порада: для отримання доступ до значень поля Properties без подвійних лапок із типу даних
JSON слід скористатися синксисом:
->>'$.Propertys_name'
/*замість*/ ->'$.Propertys_name'
select * from Products;
select p.ProductID, p.ProductName, p.BuyPrice, p.SellPrice
FROM Products p
JOIN Activity a ON p.ProductID = a.Properties ->> '$.ProductID'
WHERE
a.Properties ->> '$.Order' = 'True';