Changes between Version 6 and Version 7 of AdvancedReports


Ignore:
Timestamp:
05/28/26 13:32:19 (2 weeks ago)
Author:
232012
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedReports

    v6 v7  
    1010
    1111{{{
    12 SQL CODE
     12WITH product_sales_yearly AS (
     13    SELECT
     14        op.product_id,
     15        SUM(op.quantity) AS total_sold_yearly,
     16       
     17        SUM(op.quantity) / 365.0 AS daily_sales_velocity
     18    FROM project.ORDER_PRODUCTS op
     19    JOIN project.ORDERS o ON op.order_id = o.order_id
     20   
     21    WHERE o.purchase_date >= CURRENT_DATE - INTERVAL '1 year'
     22      AND o.status IN ('PAID', 'SHIPPED', 'DELIVERED')
     23    GROUP BY op.product_id
     24),
     25inventory_velocity AS (
     26    SELECT
     27        p.product_id,
     28        p.format,
     29        p.stock,
     30        p.price,
     31        r.title AS release_title,
     32        psy.total_sold_yearly,
     33        psy.daily_sales_velocity,
     34       
     35        CASE
     36            WHEN psy.daily_sales_velocity > 0 THEN p.stock / psy.daily_sales_velocity
     37            ELSE 9999
     38        END AS days_until_out_of_stock
     39    FROM project.PRODUCTS p
     40    JOIN project.RELEASES r ON p.release_id = r.release_id
     41    JOIN product_sales_yearly psy ON p.product_id = psy.product_id
     42)
     43SELECT
     44    product_id,
     45    release_title,
     46    format,
     47    stock AS current_stock,
     48    total_sold_yearly,
     49    ROUND(daily_sales_velocity, 4) AS daily_velocity,
     50    ROUND(days_until_out_of_stock, 1) AS days_left,
     51   
     52    CEIL((daily_sales_velocity * 90) - stock) AS recommended_restock_quantity,
     53   
     54    ROUND(CEIL((daily_sales_velocity * 90) - stock) * price, 2) AS estimated_restock_cost
     55FROM inventory_velocity
     56WHERE days_until_out_of_stock < 30
     57ORDER BY daily_velocity DESC, days_left ASC;
    1358}}}
    1459