如何使用SQL(postgresql)计算百分比?

如何使用SQL(postgresql)计算百分比?,sql,postgresql,Sql,Postgresql,假设我们有一个表crime,它有两列activitydatetimestamp,没有时区和zipcodecharacter varying5 例如: 表1.犯罪: activity date zipcode 2014-11-22 00:52:00 12345 2014-10-22 00:52:00 12345 2014-10-24 00:52:00 12345 2014-12-22 00:52:00

假设我们有一个表crime,它有两列activitydatetimestamp,没有时区和zipcodecharacter varying5

例如: 表1.犯罪:

activity date               zipcode
2014-11-22 00:52:00           12345
2014-10-22 00:52:00           12345
2014-10-24 00:52:00           12345
2014-12-22 00:52:00           54321
...

给定开始日期、结束日期和邮政编码,如何计算在给定时间段内犯罪率高于当前邮政编码的邮政编码的百分比?

以下是一种快速而令人讨厌的方法,可以获得比提供的邮政编码计数更大的邮政编码计数。然后,您可以使用它来获得百分比。不过,可能有一种更有效的方法来实现这一目标

SELECT COUNT(zipcode) as numberAbove
  FROM (SELECT
            zipcode 
        FROM
            crime
        WHERE
            activitydate >= '<START DATE>'
        AND
            activitydate < '<END DATE>'
        GROUP BY
            zipcode
        HAVING
            COUNT(zipcode) > (select COUNT(zipcode) 
                               from crime 
                               where zipcode = '<ZIP CODE TO USE>'
                               and activitydate >= '<START DATE>'
                               and activitydate < '<END DATE>' )) subq;

sqlfiddle=

如果没有SQL,您会怎么做?只需将其写在文本中,然后转换为SQL。