这是我的Amazon SQL面试问题,我惨遭炸毁。
我们有3张桌子:
NSAttributedString length
预期的输出结果是在过去30天内从3个目录/业务部门中找到前3名客户。我尝试对总销售额进行划分,但最近30天的销售额和多次加入使我失望了。以下是要求的列:
customers orders catalog
cust_id order_date catalog_id
cust_name order_id catalog_name
unit_price cust_id
quantity
catalog_id
我了解基本的“按顺序划分”,但是我没有在带有日期戳的多个表上使用它。请帮助我理解这个概念。谢谢大家!
答案 0 :(得分:0)
下面的查询应为您提供一个思路。
select *
from (select c.cust_id,c.cust_name,ct.catalog_name,sum(o.unit_price * o.quantity) as total_sales,
,dense_rank() over(partition by ct.catalog_name order by sum(o.unit_price * o.quantity) desc) as rnk
from customers c
join orders o on o.cust_id = c.cust_id
join catalog ct on ct.catalog_id = o.catalog_id
--last 30 days filter
where o.order_date >= date_add(day,-30,cast(getdate() as date)) and o.order_date < cast(getdate() as date)
group by c.cust_id,c.cust_name,ct.catalog_name
) t
where rnk <= 3