使用CUBE预测GROUP BY中的记录数

时间:2014-01-23 18:52:11

标签: sql sql-server math permutation

第1步:运行表单

的查询
SELECT field1, field2, ..., fieldn, COUNT(id) 
FROM foo 
GROUP BY field1, field2, ..., fieldn

记录列数 n ,并记录返回的行数 r1

第2步:将查询更改为

SELECT field1, field2, ..., fieldn, COUNT(id) 
FROM foo 
GROUP BY field1, field2, ..., fieldn 
WITH CUBE 

记录返回的新行数, r2

问题:是否存在计算/预测 r2 的公式/算法,因为我们知道 n r1

1 个答案:

答案 0 :(得分:1)

最大行数是每个分组列的唯一值数+ 1的叉积。您可以使用以下方式进行粗略估算:

SELECT (COUNT(DISTINCT field1)+1) * (COUNT(DISTINCT field2)+1)
FROM foo

可能不如您所需,但这是一个开始。