2014-05-12 130 views
-2

我想找出其中的一個客戶已經購買的物品的最大總金額,沒有日期範圍SQL - 高級「法醫」查詢

這些列我有:

customers.customerid 
orders.orderid 
orderdetails.productid 
orderdetails.quantity 

但我堅持在這裏:

  • 開始與客戶ID
  • 拉動將訂單的從客戶ID(使用加入我假設)
  • 拉數量和個人productid的(另一個連接?哈哈)

select * from orders returns 196 records。

選擇不同的客戶ID從訂單返回74條記錄,因此這意味着74'不同的客戶下了訂單

如何填寫?

+0

當提出這樣的問題時,有助於說「這是我處理的表格佈局」和「這是我期望得到的迴應類型」。儘管我們知道Northwind數據庫,但我們並不記住結構。 – MJB

+0

將在底部發布修訂版本! – user3629590

回答

0

首先,找出每個客戶訂購了多少項目。要做到這一點,你必須加入訂單的詳細信息及訂單表:

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