繁体   English   中英

PostgreSQL选择不同列值的计数

[英]Postgresql Select count of different value of a column

我有一个具有以下结构的postgresql数据库: ID, Date, Name,Classification 分类是外键值。 它有3个可能的值(比如C1,C2,C3),Name是一个随机字符串。

我想查询一个以特定日期间隔计数每个区域的出现次数的查询。 我想举例说明。

假设我的表格数据如下:

ID      CreateDate       Name     Classification
------+-------------+------------+-------------- 
1       2014-01-01        abc             C1 
2       2012-01-05        def             C2
3       2014-01-01        gef             C2
4       2012-01-01        hjk             C1
5       2014-01-01        lmn             C1
6       2013-06-01        opr             C3
7       2014-01-01        xyz             C1
8       2013-07-01        www             C3

我想计算每年的分类数量。 在我的示例中设置的结果是

2012 1 1 0
2013 0 0 2
2014 3 1 0

日期之后的数字是相应的每年c1,c2,c3的出现次数。

希望我很清楚。

编辑:我可以通过以下查询设法用年份数据统计特定的分类。 但是后来我被卡住了。

SELECT COUNT() ,CLASSIFICATION
      ,select count(), classification
             ,extract (year from date_trunc( 'year', CREATEDATE )) as year
         from TABLE_NAME
         group by extract ( year from date_trunc( 'year', CREATEDATE )), CLASSIFICATION
         order by year;

此过程称为条件聚集。 我们仅评估特定条件,当满足条件时返回1否则为0,然后使用聚合求和。 这使我们可以在获取所需总数的同时透视数据。

SELECT extract(year from date t.createdate) as mYear,
sum(case when t.classification = 'C1' then 1 else 0 end) as c1Sum,
sum(case when t.classification = 'C2' then 1 else 0 end) as c2Sum,
sum(case when t.classification = 'C3' then 1 else 0 end) as c3Sum
FROM Table T
GROUP BY mYear

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM