SELECT col1,COUNT(col2 = 0),AVG(col3)FROM表GROUP BY col1;在postgresql中

时间:2013-10-22 05:16:07

标签: postgresql count group-by

我有一个包含三列的表,我希望以下查询能够正常工作。

  

SELECT col1,COUNT(col2 = 0),AVG(col3)FROM FROM GROUP BY col1;

我想要实现的是我按第1列进行分组,并且在结果的每一行中,我想要以下内容

  1. COL1
  2. col2 = 0的计数,按col1分组,即我想计算表格中的行数,col2 == 0按col1分组
  3. col3的平均值按col1分组
  4. 但是这不起作用,因为我希望它可以工作。

    COUNT(DISTINCT col2)将计算每组中存在的不同col2的数量,我想要的是col2的计数,其中每组中为零。

    当我使用上面的查询时,我只是得到正常的COUNT而没有相等。

2 个答案:

答案 0 :(得分:2)

您可以使用CASE作为条件,然后使用SUM获取0条目的数量。

SELECT col1, SUM (CASE WHEN (col2=0) THEN 1 ELSE 0 END ), AVG(col3) FROM table GROUP BY col1;

答案 1 :(得分:0)

SELECT col1,SUM(CASE WHEN(col2 = 0)THEN 1 ELSE 0 END),AVG(col3)FROM table GROUP BY col1; 上面的查询将给出按col1分组的所有col3的平均值。

从table_name中选择col1,count(col2),avg(col3),其中col2 == 0 group by col1; 此查询将为您提供col3中各个行的平均值,其中col2为0