【发布时间】:2015-02-02 19:39:47
【问题描述】:
我有一个表,其中包含以下 4 个维度列和 1 个度量列Col1、Col2、Col3、Col4、度量
维度列的基数分别为a、b、c、d。
在我的应用程序中,用户可以在每列中选择任意数量的值,即多选,我需要运行查询来查找该组合的总度量值。
所以理论上最坏情况下可能组合的最大数量是(2^a-1) * (2^b-1) * (2^c-1) * (2*d-1)。
现在我想知道我的真实数据集中有多少实际组合是可能的,我认为这会少很多,因为并非所有组合在现实生活中都是可能的。
是否有一些 SQL 查询或任何其他方式(可能使用 C#)从实际数据中确定这个数字?
我的文件为.csv,也在我的 SQL 服务器数据库中。
这是一个例子:对于具有二维列的表
用户、操作、请求
U1、A1、10
U1、A2、5
U2、A3、4
理论上可能的最大组合是: (2^2) * (2^3) = 4 * 8 = 32
但实际上,可能的组合只有 10 个
- U1 + A1
- U1 + A2
- U1 + A1 + A2
- U1
- A1
- A2
- A1 + A2
- U2 + A3
- U2
- A3
【问题讨论】:
-
只是为了确保,如果 A 列中有重复值(例如
A1, A2, A2)选择两个A2s 与只选择其中一个相同? -
是的!一样的。为此,我们可以假设 use 可以选择 A1 或 A2 或两者都选或无。
-
您可以编辑问题并提供一些示例数据吗?我想确保我理解正确。
-
在问题中添加了前任
-
@user330612 不是 32 种可能性? U1/A3, U1/A1/A3, U1/A2/A3, U1/A1/A2/A3, U2/A1, U1/U2/A1, A1/A2/A3 ... U1/U2/A1/ A2/A3?将其限制为 10 种可能性的额外限制是什么。
标签: c# sql sql-server ssas