计算地址SQL中的人数

时间:2017-11-29 21:27:46

标签: mysql sql phpmyadmin

在一个主键为Person_Id的表中,地址包含多个索引,如

Road_Name, 
House_Number, 
Postcode

由于某些地址是重复的,因此可以使用SQL查询从单独的索引为每个地址创建唯一标识符吗?

然后使用唯一标识符,查找每个地址通过Person_Ids的人数是多少?

1 个答案:

答案 0 :(得分:3)

要获取每个地址的行数,我们可以使用GROUP BY和汇总...

 SELECT t.addr_road_name 
      , t.addr_house_number
      , t.addr_postal_code
      , COUNT(DISTINCT t.person_id) AS `cnt_persons`
   FROM t
  GROUP
     BY t.addr_road_name 
      , t.addr_house_number
      , t.addr_postal_code

如果我们要排除只有一个人的地址,我们可以添加

 HAVING COUNT(DISTINCT t.person_id) > 1

为了获得大集合的最佳性能,我们希望通过使用具有GROUP BY子句中引用的前导列,列的索引来避免“使用filesort”操作,例如

 ... ON t (addr_postal_code, addr_house_number, addr_road_name)