[英]how to get distinct values and their count for each column in postgresql
[英]PostgreSQL - get count of distinct years from date column
我有一个包含数百行的 PostgreSQL 表,每行包含date_creation列中的一个值(类型 date)。
这些值如下所示:
2010-04-26
2008-08-18
2015-11-11
2010-10-20
2010-03-23
2015-04-08
现在,我想知道每年发生的频率。
例如在上面的例子中,2010 发生了 3 次,2015 发生了 2 次,2008 发生了 1 次
第一部分,如何从日期获得不同的年份,工作正常:
SELECT
DISTINCT DATE_PART('year', CAST(date_creation AS DATE)) AS years_available
FROM metadata
WHERE date_creation is not NULL
但我无法弄清楚如何获得一年发生的频率。
我在这里找到了使用 COUNT 的各种答案,虽然它们一开始看起来很合乎逻辑,但它们都不会返回任何有用的东西。 我假设它链接到包括 DISTINCT 语句的查询。
使用聚合:
SELECT DATE_PART('year', date_creation::date) AS year, count(*)
FROM metadata
WHERE date_creation is not NULL
GROUP BY year;
当然,如果这是一个字符串,字符串操作就更简单了:
SELECT LEFT(date_creation, 4) as year, COUNT(*)
FROM metadata
WHERE date_creation is not NULL
GROUP BY year;
使用聚合:
select extract(year from date_creation), count(*) cnt
from metadata
where date_creation is not null
group by 1
请注意,不需要强制转换为date
,因为您已经解释过该值已经具有正确的数据类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.