2014-01-16 28 views
0

在酒吧數據庫中,我想查詢銷售質量最高的商店。 我exec後面的查詢,
sql查詢在酒吧樣本數據庫中具有最佳銷售質量的商店

select stores.stor_id, sum(sales.qty) as sumqty 
from stores 
join sales on stores.stor_id = sales.stor_id 
group by stores.stor_id, stores.stor_name 

結果:

+-------+------+ 
|stor_id|sumqty| 
+-------+------+ 
|6380 |8  | 
+-------+------+ 
|7066 |125 | 
+-------+------+ 
|7067 |90 | 
+-------+------+ 
|7131 |130 | 
+-------+------+ 
|7896 |60 | 
+-------+------+ 
|8042 |80 | 
+-------+------+ 

我需要的結果是一樣

+-------+------+ 
|stor_id|sumqty| 
+-------+------+ 
|7131 |130 | 
+-------+------+ 

您能給一些建議嗎? 謝謝。

回答

1

簡單的辦法,用SELECT TOP 1ORDER BY DESC

select top 1 sales.stor_id, sum(sales.qty) as sumqty 
from stores 
join sales on stores.stor_id = sales.stor_id 
group by sales.stor_id 
order by 2 desc; 

無論如何,爲什麼你需要加入到stores?我覺得從sales表就夠了:如果結果有兩個或多個記錄的最大值

select top 1 sales.stor_id, sum(sales.qty) as sumqty 
from sales 
group by sales.stor_id 
order by 2 desc; 

上面的查詢將會失敗。

使用此來處理:

select sales.stor_id, MAX(sumqty) as sumqty from (select sales.stor_id, sum(sales.qty) as sumqty 
from sales 
group by sales.stor_id) sales 
+0

我加盟專賣店的原因是,我想店詳細信息,作爲商店名稱。你前兩個查詢是工作,但據我所知,關鍵字TOP只支持SQL Server。我希望查詢是可移植的。上次查詢不起作用。它失敗並顯示消息「消息4104,級別16,狀態1,行2 多部分標識符」sales.stor_id「無法綁定。」 – KyL

+0

我編輯了我的上一個查詢 –

+0

感謝您的更新,但很抱歉,您的最新查詢仍然無法處理,並顯示錯誤消息「消息8120,級別16,狀態1,行3 列'sales.stor_id'在選擇列表,因爲它不包含在聚合函數或GROUP BY子句中。「 – KyL

0
Select a.stor_id, max(sumqty) 
From (

select sales.stor_id, sum(sales.qty) as sumqty 
from stores 
join sales on stores.stor_id = sales.stor_id 
group by sales.stor_id 

) a 
Group by a.stor_id 

萬一你有兩個店用同樣的銷售數量

+0

如果您發佈代碼,XML或數據樣本,請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」)以精確地設置格式並對其進行語法突出顯示! –