0

異なるクラスター ID を持つテーブルがあります

ID  
1  
1  
2  
2      
2    
3  
3  
3  
3  
4  
4  

そのクラスター内のクラスターの数でクラスターのサイズを表示したい。

たとえば、上記の表の期待される出力:

Cluster Size | No of Clusters (with that size)
2            | 2  
3            | 1  
4            | 1  

指定されたクラスター サイズを取得するクエリを作成しました。

Select COUNT(*) from  
(SELECT  ID, COUNT(ID) as cnt  
  FROM [Table] group by ID having COUNT(*) =3) as TC;

上記の例では、上記の表の結果として「1」が得られます。

ただし、すべてのクラスターとそれぞれのサイズを取得するクエリが必要です。

4

3 に答える 3

2
SELECT c AS ClusterSize, COUNT(*) AS NumOfClusters
FROM
(
    SELECT COUNT(*) AS c, ID
    FROM @table
    GROUP BY ID

)A
GROUP BY c
于 2013-03-14T17:20:29.907 に答える
2
select [Cluster Size], Count(*) as [No of Clusters]
from (
    select count(*) as [Cluster Size]
    from Table1
    group by ID
) a
group by [Cluster Size]

SQL フィドルの例

出力:

| CLUSTER SIZE | NO OF CLUSTERS |
---------------------------------
|            2 |              2 |
|            3 |              1 |
|            4 |              1 |
于 2013-03-14T17:22:23.857 に答える
0

あなたの要件を理解していれば、このクエリでうまくいくはずです:

SELECT cl.size, COUNT(cl.size)
FROM
(SELECT id, COUNT(id) [Size] FROM Table1 GROUP BY id) cl
GROUP BY cl.size

SQL Fiddle へのリンクは次のとおりです: http://sqlfiddle.com/#!3/56de3/7

于 2013-03-14T17:17:40.693 に答える