我有一个包含三列的表,我希望以下查询能够正常工作。
SELECT col1,COUNT(col2 = 0),AVG(col3)FROM FROM GROUP BY col1;
我想要实现的是我按第1列进行分组,并且在结果的每一行中,我想要以下内容
但是这不起作用,因为我希望它可以工作。
COUNT(DISTINCT col2)将计算每组中存在的不同col2的数量,我想要的是col2的计数,其中每组中为零。
当我使用上面的查询时,我只是得到正常的COUNT而没有相等。
答案 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