2017-12-09 12 views
0

중복 항목이있는 키에 대해 임의의 데이터가 포함 된 테이블이 있습니다. 중복 (관계형 대수학에서와 같이 투영법)을 제거하려고하는데, 첨부 된 데이터를 버리는 대신 함께 합산하십시오. 예를 들어 :SQL에서 함께 튜플을 추가하는 동안 Distinct 선택

orderID cost 
1   17  (5 + 2 + 10) 
2   6 
3   15 

내 가정은 내가 어떻게 든 DISTINCT를 선택 사용하는 것입니다,하지만 난 가고 싶어 방법을 모른다 :

orderID cost 
1   5 
1   2 
1   10 
2   3 
2   3 
3   15 

각 주문 ID의 값을 합산 동안 주문 ID에서 중복을 제거해야 그렇게하는 것에 대해. 나는 GROUP BY가 뭔가를 할 수는 있을지 모르지만 나는 확신 할 수 없다.

+1

관계형 대수에는 중복 행이 없습니다. 관계에 투영을 구현하는 것이 상상할 수 있습니다. 예를 들어, 관계가 아닌 것처럼 보이게 한 후 열을 삭제 한 다음 중복 된 행을 제거한 다음 그와 같은 관계를 만들면됩니다. 그러나 그것은 비 관계를 수반하는 절차입니다. SQL 테이블은 관계가 아닙니다. SQL은 관계 개념을 잘못 구현합니다. – philipxy

+0

[GROUP BY는 어떻게 작동합니까?] (https://stackoverflow.com/questions/7434657/how-does-group-by-work) – philipxy

+0

질문을 고려하기 전에 조사하십시오. 여기서 GROUP BY에 대한 소개는이를 수행하는 방법을 알려줍니다. See ask와 downvote arrow mouseover text. 또한 'stackexchange 숙제'를 검색합니다. 예를 들어 [내 * * 귀하의 질문에 대한 검색 후 첫 번째 히트 *] (https://stackoverflow.com/q/15512628/3404097)이 질문에 대한 답변입니다. – philipxy

답변

1

이것은 매우 기본적인 집합입니다 :이 경우, sum - 당신은 당신에 의해 그룹화되지 않은 컬럼의 결과를 얻을 수 집계 함수를 적용 할 수 있습니다 각 "orderId"그룹화에 대해 "비용"필드를 합하고 그룹당 하나의 값을 반환합니다.

0

이 경우 group by 절을 사용하면 그룹화중인 열의 고유 값당 하나의 행을 얻을 수 있습니다 (이 경우 orderId).

SELECT orderId, SUM(cost) AS cost 
FROM MyTable 
GROUP BY orderId 

이 말한다 :

SELECT orderId, SUM(cost) 
FROM  mytable 
GROUP BY orderId