![](/img/trans.png)
[英]PostgreSQL select and count column from table on different conditions
[英]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.