如何使用组合总结?

时间:2014-04-14 16:10:03

标签: mysql sql

我试图统计表格政策中存在的所有客户端

这是我的表格:

|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

请有人帮助我吗?

所有的帮助都将被接受。

2 个答案:

答案 0 :(得分:1)

您只需计算出现在政策表

中的不同客户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

如果您信任您的参照完整性,您甚至不需要join与客户端表,即如果您确定所有client_id字段都填充了有效的客户端,只需执行

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

答案 1 :(得分: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

或者您是否想要了解每个客户有多少政策?