Sql 使用多维数据集预测分组中的记录数

Sql 使用多维数据集预测分组中的记录数,sql,sql-server,math,permutation,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 记录返回的新行数r

步骤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


问题:如果我们知道n和r1,是否有计算/预测r2的公式/算法?

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

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

可能没有您需要的准确,但这只是一个开始。

这确实为r2的值提供了一个很好的上限。由于没有其他回应/答案,我花了时间对这个问题进行了理论解释,希望我们能通过这种方式得到答案: