Advertisement
Guest User

Untitled

a guest
Apr 9th, 2020
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 2.34 KB | None | 0 0
  1. DECLARE  @order_date datetime, @number_of_days INT, @order_id INT, @ratio FLOAT, @min_sales int , @min_days int, @category_id int
  2.  
  3. DECLARE by_category cursor fast_forward FOR
  4. SELECT OrderID, OrderDate FROM Orders
  5.                      ORDER BY OrderDate ASC
  6. OPEN by_category
  7. fetch NEXT FROM by_category INTO @order_id, @order_date
  8. while @@fetch_status = 0
  9. BEGIN
  10.   DECLARE @is_true tinyint, @actual_date datetime
  11.   SET @is_true = 1
  12.   SET @number_of_days = 14
  13.   SET @ratio = 0.7
  14.   set @min_sales=5
  15.   set @min_days=14
  16.   set @category_id=1
  17.   while @is_true = 1
  18.   BEGIN
  19.     set @actual_date = DATEADD(DAY, @number_of_days, @order_date)
  20.     declare @all_items INT = 0, @beverage_items INT = 0
  21.     SELECT @all_items = COUNT(*) FROM Orders WHERE OrderDate >= @order_date AND OrderDate <= @actual_date
  22.     SELECT  @beverage_items = COUNT(Orders.OrderID) FROM Orders
  23.                                                   WHERE OrderDate >= @order_date AND
  24.                                                         OrderDate <= @actual_date AND
  25.                                                         Orders.OrderID IN (SELECT [ORDER Details].OrderID FROM [ORDER Details]
  26.                                                                                                                  JOIN Products P2 ON [ORDER Details].ProductID = P2.ProductID
  27.                                                                                                                  JOIN Categories C2 ON P2.CategoryID = C2.CategoryID
  28.                                                                           WHERE C2.CategoryID = @category_id)
  29.     IF @all_items >= @min_sales  AND CAST(@beverage_items AS FLOAT) / CAST(@all_items AS FLOAT) >= @ratio
  30.       BEGIN
  31.         SET @number_of_days += 1
  32.       END
  33.     ELSE
  34.       BEGIN
  35.         SET @is_true = 0
  36.         IF @number_of_days > @min_days
  37.           print('Időszak eleje: ' + CAST(@order_date AS VARCHAR(255)) + ', vége: ' +
  38.                                     CAST(@actual_date AS VARCHAR(255)) + ' napok száma: ' +
  39.                                     CAST(DATEDIFF(DAY, @order_date, @actual_date) AS VARCHAR(255)) + ', rendelések száma: ' +
  40.                                     CAST(@all_items AS VARCHAR(255)))
  41.       END
  42.   END
  43.   fetch NEXT FROM by_category INTO @order_id, @order_date
  44. END
  45. close by_category
  46. deallocate by_category
  47. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement