2013-02-23 5 views
0

SQL 선택에 대해 필사적입니다. ID, 국가, 주소 및 가격의 4 가지 매개 변수가있는 표가 하나 있습니다. 이 테이블은 많은 행에 대해 동일한 id를 가지고 있으며 각 id에 대한 가격의 합계를 얻으려고합니다. 나는 다음 데이터가있는 경우 예를 들어, :SQL 첫 번째 행만 선택하십시오.

ID Country Address Price 
1 France Address1 1000 
1 France Address2 3332 
1 France Address1 1562 
1 France Address3 1123 
1 France Address2 1123 
2 UK  Address8 1234 
2 UK  Address7 1233 

을 나는 다음 결과를 가져올 : 나는 쿼리를 많이 시도

ID Country Address Price 
1 France Address1 SUM(1000, 3332, 1562, 1123, 1123) 
2 UK  Address8 SUM(1234, 1233) 

을하지만, 그 결과를 얻을 수 없습니다. 문제는 국가 및 주소별로 그룹화 된 데이터를 얻는 것과 다른 주소를 가지고 있기 때문에 예를 들어 프랑스의 세 주소와 함께 여러 행을 얻을 수 있다는 것입니다.

미리 감사드립니다.

영어로는 불편을 끼쳐 드려 죄송합니다.

+0

현재 사용중인 RDBMS는 무엇입니까? 또한 첫 번째 주소로 무엇을 의미합니까? 최대 또는 최소 주소? 행은 테이블의 특정 순서로 저장되지 않으 G로, 순서에 따라 첫 x 째 행을 선택하려는 순서를 지정해야합니다. –

답변

4

를 작동하는 경우, 하나는 첫 번째 주소 행으로 간주되는 말할 수 없다. 그 다음, 오름차순으로 정렬되어있는 경우 :

SELECT [ID], Country, MIN(Address), SUM(Price) As TotalPrice 
FROM  tblYourTableName 
GROUP BY [ID], Country 
ORDER BY [ID] 

그렇지 않은 경우에, 당신은 ID & 국가 별 주소를 정렬하는 하위 쿼리를 구현해야합니다. 더 많은 것을 알 필요가있다.

+0

시도했지만 동일한 문제가 있습니다. 각 ID에 대해 하나의 행만 가져오고 싶지만 여러 주소가 있으므로 여러 행을 얻습니다. – ReyLitch

+0

미안 MIN을 사용하는 것을 잊어 버립니다. 그거야. 대단히 감사합니다. 대답 – ReyLitch

+0

이 감사하게 생각합니다. D : D –

0

확인 당신이 당신의 주소를 정렬 방법을 알고없이

SELECT country, SUM(price) 
FROM table 
GROUP BY country 
0

답변은 DBMS에 따라 다릅니다. 예 :

SELECT [ID], Country, Address, SUM(Price) As TotalPrice 
FROM  tblYourTableName 
GROUP BY Country 
ORDER BY [ID] 

이 쿼리는 Sql Server, Oracle에서는 작동하지 않지만 MySql에서는 작동합니다.

0

쿼리에 대한 가장 간단한 방법이 하나

select a.ID, a.Country, a.Address, sum(a.Price) as TotalPrice 
from address a 
group by a.ID; 

하지만 다른 말했듯이, 우리는 당신이 적절한 출력을 가지고 국가에 관련하여 주소를 정렬하는 방법을 알아야합니다.

또 다른 중요한 것은 DBMS입니다. 신속 http://www.sqlfiddle.com/#!2/61ba6/4

을 테스트하는 쿼리가 작동 할 것이라고 100 % 확신, 그래서 당신은 심지어 DBMS를 변경할 수 있습니다 원한다면 그건 그렇고

이 SQLFiddle을 확인합니다.

관련 문제