2012-07-20 4 views
0

GROUP BY를 사용할 때 어떤 집계 함수가 문자열에서 작동합니까?SQL : GROUP BY (문자열 데이터 포함)

나는 보통 GROUP BY user_id이지만 어떤 집계 함수가 문자열에 대해 작동 할 수 있는지 잘 모르겠습니다.

user_id currency 

12341235 "USD" 
12341235 "USD" 
12341235 "USD" 
12341235 "USD" 
05945949 "EURO" 
05945949 "EURO" 
05945949 "EURO" 
99910277 "USD" 
99910277 "USD" 
99910277 "USD" 

완료 데이터 :

user_id currency 

12341235 "USD" 
05945949 "EURO" 
99910277 "USD" 
+0

예에서 날짜를 사용했지만 유형이 STRING으로 저장되었으며 데이터베이스 (Hive)로 인해 날짜 유형으로 변환 할 수 없습니다. –

답변

2

데모 http://sqlfiddle.com/#!3/60ea7/5

뚜렷한 및 GROUP하기 때문에 성능이 모두 쿼리 구조에서 동일해야합니다. GROUP BY는 각 그룹에 집계 연산자를 적용하는 데 사용해야합니다. 필요한 것은 중복을 제거한 다음 DISTINCT를 사용하는 것입니다. 하위 쿼리를 사용하는 경우 해당 쿼리에 대한 실행 계획이 달라 지므로이 경우 더 빨리 결정하기 전에 실행 계획을 확인해야합니다.

+0

@ downvoter : 의견 pls .. –

1

당신은에 의해 그룹을 사용하려는 이유는 특별한 이유가

목표는 하나의 행으로 각각 USER_ID의 통화를 얻는 것입니다?

동일한 결과를 얻으려면 DISTINCT를 사용할 수 있어야합니다.

선택 고유 USER_ID, 통화

2

사실, 당신은 group by가이 distinct하여 수행 할 수 있습니다 필요가 없습니다. 각 행에 하나의 user에 대해 같은 currency 가지고

select distinct user_id,currency from your_table; 

, 여기에 어떤 aggregate function의 필요 없다.

1

그룹 BNY 모든 열은 동일한 쿼리 계획을 생성 일반적으로하여 고유

select user_id,currency from your_table 
Group by user_id,currency