SQL计数在已创建的列上

时间:2014-11-06 03:47:53

标签: sql count

以下查询根据地理坐标计算用户距离。它为1英里范围内的人返回4个结果。我如何计算结果并将其返回?

select  ((ACOS(SIN(40.7643030* PI() / 180) * 
                         SIN(users.lat * PI() / 180) + 
                         COS(40.7643030* PI() / 180) * 
                         COS(users.lat * PI() / 180) * 
                         COS((-73.9730040- users.lon) * PI() / 180)) * 
                         180 / PI()) * 60 * 1.1515)         
                         AS `distance` FROM users HAVING distance < 1

我尝试在距离后添加'COUNT(*)AS count',但它没有返回任何结果。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以使用子查询:

select count(*)
from (select  ((ACOS(SIN(40.7643030* PI() / 180) * 
                         SIN(users.lat * PI() / 180) + 
                         COS(40.7643030* PI() / 180) * 
                         COS(users.lat * PI() / 180) * 
                         COS((-73.9730040- users.lon) * PI() / 180)) * 
                         180 / PI()) * 60 * 1.1515)         
                         AS `distance`
      FROM users
      HAVING distance < 1
     ) t;