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.
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.
別のバリエーションですが、@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;
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を参照してください
バージョンが2005以降の場合はOVER
、アグリゲートで使用できCOUNT()
ます。
SELECT id
, 1.0 / COUNT(*) OVER (PARTITION BY id) AS countif_ID
FROM TableX ;
その他の例は、MSDNサイトのOVER
節にあります。