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

时间:2015-01-20 07:11:07

标签: sql postgresql

假设我们有一张桌子"犯罪"它有2列"活动日期"(没有时区的时间戳)和"邮政编码"(字符变化(5))

例如: 表"犯罪":

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
...

考虑到开始日期,结束日期和邮政编码,如何计算在给定时间段内比当前邮政编码具有更多犯罪数量的邮政编码的百分比?

1 个答案:

答案 0 :(得分:0)

以下是一种快速而令人讨厌的方法来获取比所提供的邮政编码更多计数的邮政编码。然后,您可以使用它来获得百分比。 (可能有更有效的方法来获得它)

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