1

テーブル X にデータがあるとします。

id     assign  team
 ----------------------  
 1     hunkim    A  
 1     ygg       A  
 2     hun       B  
 2     gw        B  
 2     david     B  
 3     haha      A

各 ID に割り当てられている数を知りたいです。私は使用することができます:

X group by id から id, count(distinct assign) を選択し、count(distinct assign)desc で並べ替えます。

それは私に何かを与えるでしょう:

1  2
2  3
3  1

私の質問は、すべての割り当てカウントの平均を取得するにはどうすればよいですか?

さらに、今私はチームごとのエバージを知りたいと思っています。だから私は次のようなものを取得したい:

team    assign_avg
-------------------
A         1.5
B         3

前もって感謝します!

4

2 に答える 2

1
SELECT
    AVG(CAST(assign_count AS DECIMAL(10, 4)))
FROM
    (SELECT
        id,
        COUNT(DISTINCT assign) AS assign_count
    FROM
        X
    GROUP BY
        id) Assign_Counts

SELECT
    team,
    AVG(CAST(assign_count AS DECIMAL(10, 4)))
FROM
    (SELECT
        id,
        team,
        COUNT(DISTINCT assign) AS assign_count
    FROM
        X
    GROUP BY
        id,
        team) Assign_Counts
GROUP BY
    Team
于 2010-06-11T17:38:59.187 に答える
1

集計関数 COUNT と AVG を使用して、1 つのクエリで必要なことを実行できます。

  SELECT t.id,
         COUNT(*) AS num_instances,
         AVG(t.id) AS assign_avg
    FROM TABLE t
GROUP BY t.id

集計関数が実行されていない列は、GROUP BY 句で定義する必要があります。

于 2010-06-11T17:43:30.000 に答える