2013-05-22 109 views
3

對不起,如果主題名稱似乎令人困惑 - 我想不出一個更好的方式來描述它。在另一個值相同的行中選擇最大值

我被一個SELECT語句卡住了。我有3代表一個DB:

Customer (PK cid, name, city, gender); 
Goods (PK gid, name, price, available[bool]); 
Sales (PK sid, FK cid, FK gid, count, discount, sdate) 

我所要做的就是找到在每個城市出售的商品最高優惠。

因此,如果選擇城市和折扣的看起來是這樣的:

city    | discount 
-------------------+--------- 
TARDIS    | 0.1 
London    | 
London    | 0.05 
Boeshane Peninsula | 0.15 
London    | 0.1 
London    | 0.05 

我想要得到的是:

city    | MaxDiscount 
-------------------+---------- 
Boeshane Peninsula | 0.15 
London    | 0.1 
TARDIS    | 0.1 

而且我不知道如何通過城市羣是並在結果中找到最大折扣。我得到的最接近的是SELECT city, (SELECT max(discount) FROM Sales, Customer GROUP BY city) as MaxDiscount FROM Sales, Customer ORDER BY city;,但它不起作用,因爲它試圖將多行插入到一箇中。

回答

4
select city, max(discount) as MaxDiscount 
from customer, sales, goods 
where customer.cid = sales.cid 
    and goods.gid = sales.gid 
group by city 
+0

哎呀......舊式加入! – Andomar

+0

工作,謝謝。 – Kaworu

+0

@Andomar哈哈!保持簡單! – xagyg

4
select city,max(discount) as MaxDiscount 

from Customer cu 

inner join Goods Go on cu.cid = Go.gid 
inner join Sales Sa on cu.cid = Sa.sid 
where cu.city like 'XYZ%' 

group by city,discount 

或者:

select city,max(discount) as MaxDiscount 

from Customer cu 

inner join Sales Sa on cu.cid = Sa.sid 
where cu.city like 'XYZ%' 

group by city,discount 
+2

+1你比我更好地閱讀這個問題:) – Andomar

+0

@Andomar:你的sql語句也正確 –

+0

我的聲明假設''城市'在'銷售「表,但它在」客戶「表中,所以您確實需要加入。 – Andomar

相關問題