2013-05-22 2 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    | MaxDiscount 
-------------------+---------- 
Boeshane Peninsula | 0.15 
London    | 0.1 
TARDIS    | 0.1 

내가 어떻게 도시 별 그룹을에 확실하지 않다 :

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

내가 얻고 싶은 것은 결과 사이에서 최대 할인을 찾으십시오. 가장 가까운 것은 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 LOL! 그것을 간단하게 유지! – 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

내 성명은' Sales' 테이블에 있지만 Customer 테이블에 있으므로 실제로 조인이 필요합니다. – Andomar