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';