2

SQLServerに1/countifに相当するものはありますか?

何かのようなもの:

SELECT ID,1/COUNTIF(ID)
FROM Table

... 1をテーブル内の特定のIDを持つ行数で除算し、次の形式で結果を返します。

ID  Result
1   0.5
1   0.5 
2   1
3   0.33
3   0.33
3   0.33 etc.
4

3 に答える 3

1

別のバリエーションですが、@ypercubeのシンプルなソリューションが一番好きです。

;WITH x(ID,c) AS (SELECT ID, COUNT(*) FROM dbo.Table GROUP BY ID)
SELECT t.ID, 1.0/x.c
FROM dbo.Table AS t
INNER JOIN x ON t.ID = x.ID;
于 2012-09-05T11:22:35.923 に答える
1

COUNTIFに完全に相当するものはありませんが、標準SQLを使用して簡単に実行できます。次のようなものを試してください(テーブルが「テスト」と呼ばれる場合):

SELECT ID,
       1.0 / (SELECT COUNT(*) FROM test t2 WHERE t2.ID = t1.ID) AS result
FROM   test t1;

http://sqlfiddle.com/#!3/bfcbb/5を参照してください

于 2012-09-05T11:14:21.430 に答える
1

バージョンが2005以降の場合はOVER、アグリゲートで使用できCOUNT()ます。

SELECT id
     , 1.0 / COUNT(*) OVER (PARTITION BY id) AS countif_ID
FROM TableX ;

その他の例は、MSDNサイトのOVERにあります。

于 2012-09-05T11:08:50.630 に答える