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

How to compute percentage using SQL(postgresql)?

假设我们有一个 table "crime",它有 2 列 "activitydate"(没有时区的时间戳)和 "zipcode"(字符变化(5))

例如: table "crimes":

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 = http://sqlfiddle.com/#!15/9e5f3/23