如何使用 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
假设我们有一个 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