2013-04-25 2 views
0

테이블 A와 테이블 B 두 개의 테이블이 있습니다. 표 A는 같은 설정SQL에서 합계 계산

...

사용자

Id ... InspectStat PurchaseStat SoldStat POSStat 
------------------------------------------------------------ 
1   
2 
3 

속성

UserId ... Stage 
---------------------------------------------------  
    1  Inspect 
    3  Purchase 
    1  Sold 
    2  POS 

나는 매 시간마다, 각각의 비율을 계산하는 작업을 쓰기 위해 노력하고 있어요 사용자가 각 단계의 전체 속성 그래서 예를 들어, 최종 결과는 I가

ALTER PROCEDURE [dbo].[StatCounter] 

AS 
DECLARE @PropertyCount as float 

BEGIN 

set @PropertyCount = (select count(AcquisitionAssociateId) from [dbo].[Properties],  [dbo].[Users] 
WHERE 
    [dbo].[Users].Id = [dbo].[Properties].AcquisitionAssociateId) 
update [dbo].[Users] 
set [dbo].[Users].PurchaseStat = ((select count (AcquisitionAssociateId) from [dbo].[Properties] 
WHERE 
    [dbo].[Users].Id = [dbo].[Properties].AcquisitionAssociateId 
    and 
    [dbo].[Properties].Stage = 'Purchase')/@PropertyCount) 

...Repeat for 3 other stages 

이 방법은 정확하게 각 단계의 속성의 수를 카운트한다 시도

Id ... InspectStat PurchaseStat SoldStat POSStat 
------------------------------------------------------------ 
1   .5    0    .5   0 
2   0    0    0   1.0 
3   0    1.0   0   0 

(전용이 4 개 개의 특성이 있다고 가정) 다음과 같아야 그러나 그것을 실행 한 후에 실제로 수행하는 작업은 사용자가 할당 된 속성 수를 계산하고 개별 사용자가 실제로 보유한 속성 수를 구별하지 않는다는 것을 깨달았습니다. 내가 가면 SQL을 배우므로 도움이 많이 감사 할 것입니다.

+1

용어, "속성이 사용자에게 할당"을 무엇을 "등록 사용자가있다"실제로 의미? –

+0

RDBMS 란 무엇입니까? SQL Sever처럼 보입니다. 확인해주세요. – EricZ

+0

@ Dan - 내가 말한 것은 각 속성에 하나의 사용자 또는 사용자가 할당되어 있다는 것입니다. 사용자가 할당 한 속성의 총 수를 계산하려고합니다 (표 b의 UserId가 표의 ID와 같을 때). 그런 다음 네 단계 각각에서 속성의 비율을 계산합니다. –

답변

1

이것은 피벗의 특별한 경우입니다. 다음은 avg()을 사용하여 계산합니다. 그것은 통계에 대해 "1"의 값을 할당하고 평균 행에 총에 의해 분할을 수행

select userid, 
     avg(case when Stage = 'Inspect' then 1.0 else 0.0 end) as InspectStat, 
     avg(case when Stage = 'Purchase' then 1.0 else 0.0 end) as PurchaseStat, 
     avg(case when Stage = 'Sold' then 1.0 else 0.0 end) as SoldStat, 
     avg(case when Stage = 'POS' then 1.0 else 0.0 end) as POSStat 
from properties p 
group by userid 
+0

고마워요, 저에게 제가 찾던 답을주었습니다. –