2014-04-14 7 views
1

내가 여기에 테이블 정책그룹을 기준으로 합계를 계산하는 방법은 무엇입니까?

내 테이블에 존재하는 모든 고객 계산하기 위해 노력하고있어 :

|Policies| 
    |id| |num_policy| |client_id| |state| 
    1  1234   1   0 
    2  5678   1   0 
    3  9123   1   0 
    4  4567   2   0 
    5  8912   3   0 
    6  3456   4   0 
    7  7891   4   0 
    8  2345   4   0 
    9  6789   4   0 

|Clients| 
    |id| |name| 
    1  ABC 
    2  DEF 
    3  GHI 
    4  JKL 
    5  MNO 
    6  PQR 
    7  STU 
    8  VWX 
    9  YZA 

내가 계산을 정책에 존재하는 모든 고객을 얻으려고합니다.

|clients| |state| 
     5   0 

내가 시도 : http://sqlfiddle.com/#!2/eb479/2

select count(*) as total from policies p 
INNER JOIN clients c ON c.id = p.client_id 
WHERE p.state= 0 
group by p.client_id 

제발 누군가가 나를 도울 수 있습니까?

모든 도움을 받으실 수 있습니다.

+0

그래서 테이블의 모든 고유 값을 계산 하시겠습니까? 'COUNT (DISTINCT 클라이언트) 사용 ' – knittl

+0

또한 group by 절이 필요하지 않습니다. –

답변

1

당신은 당신이 즉 당신의 참조 무결성을 신뢰하는 경우 당신은 모든 것을 확신하는 경우에도 클라이언트 테이블과 join을 필요로하지 않는 정책 테이블

select count(distinct client_id) as count 
from policies p 
    inner JOIN clients c ON c.id = p.client_id 
WHERE p.state= 0 

에 나타나는 고유 한 클라이언트 ID를 셀 수 client_id 필드는 유효한 클라이언트로 채워집니다.

select count(distinct client_id) as count 
from policies p 
WHERE p.state= 0 
+0

도움을 주셔서 감사합니다 –

1

최소 하나의 정책이있는 클라이언트를 얻으려고합니까?

select p.client_id from policies p 
INNER JOIN clients c ON c.id = p.client_id 
WHERE p.state= 0 
group by p.client_id 

또는 정책을 보유한 클라이언트 수를 계산하려고합니까?

select count(distinct client_id) as count 
from policies p 
    inner JOIN clients c ON c.id = p.client_id 
WHERE p.state= 0 

또는 각 클라이언트의 정책 수는 얼마입니까?

+0

감사합니다 Mauricio –

관련 문제