WITH t AS (
SELECT s.store_id,
store_name,
city,
s1.sku_id,
COALESCE(SUM(qty),0) AS last7d_qty,
ROUND(COALESCE(SUM(qty),0)/7,2) AS avg_daily_qty,
MAX(stock_qty) AS stock_qty,
CASE WHEN ROUND(COALESCE(SUM(qty),0)/7,2)>0 THEN ROUND(MAX(stock_qty)/ROUND(COALESCE(SUM(qty),0)/7,2), 1) ELSE NULL END AS coverage_days
FROM store_info_ s
LEFT JOIN store_stock_ s1 ON s.store_id=s1.store_id
LEFT JOIN sales_daily_ s2 ON s1.store_id=s2.store_id AND s1.sku_id=s2.sku_id AND DATEDIFF((SELECT MAX(snapshot_date)FROM store_stock_),sale_date) BETWEEN 0 AND 6
GROUP BY s.store_id,
store_name,
city,
s1.sku_id
),
t1 AS
(
SELECT *,
ROW_NUMBER() OVER(PARTITION BY store_id ORDER BY last7d_qty DESC,sku_id ASC ) AS rank_in_store
FROM t
)
SELECT *
FROM t1
WHERE rank_in_store<=3