SQL-高级;“法医学”;询问
我想知道哪位客户购买的商品总量最大,没有日期范围 以下是我的专栏:SQL-高级;“法医学”;询问,sql,sql-server,Sql,Sql Server,我想知道哪位客户购买的商品总量最大,没有日期范围 以下是我的专栏: customers.customerid orders.orderid orderdetails.productid orderdetails.quantity 但我被困在这里: 从customerid开始 从customerid中提取orderid(使用我假设的联接) 拉取数量和单个productid(另一个连接?lol) 选择*从订单返回196条记录 从orders returns 74条记录中选择distinct c
customers.customerid
orders.orderid
orderdetails.productid
orderdetails.quantity
但我被困在这里:
- 从customerid开始
- 从customerid中提取orderid(使用我假设的联接)
- 拉取数量和单个productid(另一个连接?lol)
如何完成此操作?首先,了解每位客户订购的商品数量。要做到这一点,您必须加入order detail和orders表:
select o.customerid, sum(od.quantity) as nbr_items
from orderdetail od
inner join orders o
on o.orderid = od.orderid
group by o.customerid
但是,如果您还需要客户名称(这很可能),那么您也必须加入customer表:
select o.customerid, sum(od.quantity) as nbr_items
from orderdetail od
inner join orders o
on o.orderid = od.orderid
inner join customer c
on c.customerid = o.customerid
group by o.customerid
但当然,您特别要求的是拥有最多商品总量的客户,所以请按该总量降序排列:
select o.customerid, sum(od.quantity) as nbr_items
from orderdetail od
inner join orders o
on o.orderid = od.orderid
inner join customer c
on c.customerid = o.customerid
group by o.customerid
order by 2 DESC
并使用TOP N函数仅获取第一个:
select top 1 o.customerid, sum(od.quantity) as nbr_items
from orderdetail od
inner join orders o
on o.orderid = od.orderid
inner join customer c
on c.customerid = o.customerid
group by o.customerid
order by 2 DESC
当提出这样的问题时,可以说“这是我正在处理的表格布局”和“这是我希望得到的回答。”即使我们知道Northwind数据库,我们也不会记住结构。将在底部发布修订版!