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.
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.
另一种变体,但我最喜欢@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;
如果您的版本是 2005 及更高版本,则可以使用OVER
聚合COUNT()
:
SELECT id
, 1.0 / COUNT(*) OVER (PARTITION BY id) AS countif_ID
FROM TableX ;
您可以在 MSDN 站点中找到更多示例:OVER
子句。
不完全等同于 COUNTIF,但可以使用标准 SQL 轻松完成。尝试这样的事情(如果你的表被称为“测试”):
SELECT ID,
1.0 / (SELECT COUNT(*) FROM test t2 WHERE t2.ID = t1.ID) AS result
FROM test t1;