-3

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

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

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

  1. col1
  2. col2=0 的计数,按 col1 分组,即我想计算表中 col2==0 的行数,按 col1 分组
  3. 按 col1 分组的 col3 的平均值

但这并没有像我期望的那样工作。

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

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

4

2 回答 2

2

您可以使用CASEfor 条件,然后使用 SUM 来获取 0 条目的数量。

SELECT col1, SUM (CASE WHEN (col2=0) THEN 1 ELSE 0 END ), AVG(col3) FROM table GROUP BY col1;
于 2013-10-22T05:57:30.747 回答
0

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

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

于 2017-05-24T08:19:50.410 回答