-3

3 つの列を持つテーブルがあり、以下のクエリを機能させたいと考えていました。

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

私が達成しようとしているのは、列1でグループ化していて、結果の各行で次のことをしたいということです

  1. col1
  2. col1 でグループ化された col2=0 のカウント、つまり、col1 でグループ化された col2==0 のテーブルの行数をカウントしたい
  3. col1 でグループ化された col3 の平均

しかし、これはうまくいくと思っているのでうまくいきません。

COUNT(DISTINCT col2) は、各グループに存在する個別の col2 の数をカウントします。必要なのは、各グループでゼロである col2 の数です。

上記のクエリを使用すると、等価性のない通常の COUNT が得られます。

4

2 に答える 2

2

条件に使用CASEし、次に 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 に答える