2

SQL Server 中是否有等效于 1/countif 的值?

就像是:

SELECT ID,1/COUNTIF(ID)
FROM Table

...将 1 除以 Table 中具有特定 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

如果您的版本是 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 回答
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 回答