Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-高级;“法医学”;询问_Sql_Sql Server - Fatal编程技术网

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)
选择*从订单返回196条记录

从orders returns 74条记录中选择distinct customerid,这意味着74个“distinct”客户下了订单


如何完成此操作?

首先,了解每位客户订购的商品数量。要做到这一点,您必须加入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数据库,我们也不会记住结构。将在底部发布修订版!