我对查询PostgresSQL非常陌生,感谢您的帮助。我有一张桌子,上面有日期like such for 2019:
https://phl.carto.com/api/v2/sql?q=SELECT permitissuedate FROM permits WHERE date_part('year', permitissuedate) = 2019
我只是想按年份列出记录的频率表,但是无法弄清楚我的错误是与Postgres还是API的所有者CARTO有关。我的理解是,我需要使用date_trunc
将时间戳转换为年份,计算这些年份,然后group_by
转换年份字段。以下是我一团糟的例子。任何帮助将不胜感激。
https://phl.carto.com/api/v2/sql?q=SELECT permitissuedate count(date_trunc('year', permitissuedate)) from PERMITS GROUP BY date_trunc('year', permitissuedate))
答案 0 :(得分:1)
原始查询:
SELECT extract(year from permitissuedate) as year, count(*)
from PERMITS
GROUP BY year order by year;
URL:
https://phl.carto.com/api/v2/sql?q=SELECT extract(year from permitissuedate) as year, count(*) from PERMITS GROUP BY year order by year
请参见demo。
修改
extract(year from permitissuedate)
胜过date_trunc
,只是因为它返回的是数字而不是时间戳; count(1)
类似于count(*)
,算一号-每组中的记录数。您可以使用其中任何一个; GROUP BY 1
是“按第一选择表达式分组”的缩写,即GROUP BY extract(year from permitissuedate)
; order by 1
类似,“按第一个选择表达式排序”。您可以绕开ORDER BY year
,因为year
是extract(year from permitissuedate)
的别名。