2021 жылы «Киім» санатында және 2022 жылы «Табыс» санатында тапсырыстар мен «қажетті санаттағы тауарлар» санын шығарыңыз (жалпы түрі: 2 жол. Аралықтар: жыл, тауарлар саны, тапсырыстар саны) with cte as( select year(o.order_date) as year_orders, g.cat_1, count(distinct o.order_id) as count_orders, sum(g.quantity) as count_quan from Orders o join Goods g on o.order_id = g.order_id where (g.cat_1 = 'Киім' and Year(o.order_date) = 2021) or (g.cat_1 = 'Табыс' and Year(o.order_date) = 2022) group by year_orders, g.cat_1 ) select year_orders, count_quan, count_orders from cte 2025 жылы әр санаттағы ең көп сатылымдар бойынша топ-3 модельдер with cte as( select cat_1, price, quantity, model, rank() over(partition by cat_1) as rk from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 ) 2025 жылы әр санаттағы сатылымдардың сомасы бойынша топ-3 модельдер with cte as( select g.cat_1, g.model, (price * quantity), rank() over(partition by cat_1) as rk from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 ) with cte as( select g.cat_1, g.model, sum(price * quantity) as sum_, rank() over(partition by g.cat_1 order by sum() desc) as rk from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 ) with cte1 as( select g.cat_1, g.model, sum(price * quantity) as sum_total, from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 ), cte2 as(select g.cat_1, g.model, sum_total, rank() over(partition by g.cat_1 order sum_total desc) as rk from cte1 ) select g.cat_1, g.model, sum_total from cte2 where rk <=3 with cte1 as( select g.cat_1 as cat_name, g.model as model, sum(price * quantity) as sum_total, from Orders o join Goods g on o.order_id = g.order_id where Year(o.order_date) = 2025 group by Year(o.order_date), g.model ), cte2 as(select cat_name, model, sum_total, rank() over(partition by cat_name order sum_total desc) as rk from cte1 ) select cat_name, model, sum_total from cte2 where rk <=3
Data Engineer
1. Тапсырыстар: - order_date datetime КЕРЕК - user_id int КЕРЕК - order_id int КЕРЕК 2. Тауарлар: - order_id int КЕРЕК - model int КЕРЕК - cat_1 varchar(50) КЕРЕК - price int КЕРЕК - quantity int КЕРЕК cat_1 мәндері: - Киім - Аяқ киім - Косметика - Үй заттары - Ойыншықтар 2021 жылы "Киім" санатындағы тапсырыстар мен "қажетті категориядағы тауарлар саны" 2022 жылы "Аяқ киім" санатында көрсетіңіз (жалпы түрі: 2 жол. Аралықтар: жыл, тауарлар саны, тапсырыстар саны) with cte as( select year(o.order_date) as year_orders, g.cat_1, count(distinct o.order_id) as count_orders, sum(g.quantity) as count_quan from Orders o join Goods g on o.order_id = g.order_id where g.cat_1 = 'Киім' and Year(o.order_date) = 2021 or g.cat_1 = 'Аяқ киім' and Year(o.order_date) = 2022 group by year_orders, g.cat_1 ) select year_orders, count_quan, count_orders from cte
Неліктен сіз ранжирлеуді бөлек CTE-ге шығаруды шештіңіз? Неліктен оны бірден бірінші CTE-да қолдануға болмас еді?