我正在使用Microsoft Access。我的要求是,用户将提供任何百分比值,我必须找到形成“Value
”列百分比的ID数量。对于例如在下面的DataSet中(它按值列的降序排序,也是必需的),所有值的总和是'8409131'。
ID NAME VALUE
1000000090 A 2295175
1000000974 B 1942753
1000015555 C 1887965
1000004864 D 1310400
1000015557 E 972838
如果我输入75%,则值为65170765.25,因此我需要返回形成'65170765'的所有ID,小于或等于。所以在这种情况下,下面是小于65170765的值的总和。
ID NAME VALUE
1000000090 A 2295175
1000000974 B 1942753
1000015555 C 1887965
这可以在Access SQL中实现我的要求吗?
我的计划是创建一个运行总计列来查找前两行的总和,然后将该值与下一行的总和相加。但在Access中,我无法弄清楚如何在select查询中创建增量行来实现此目的。
我试过查询:
SELECT T1.ID, T1.NAME, T1.VALUE,(T1.VALUE + T2.VALUE)
FROM (
SELECT ID , RUN_MANAGER.NAME AS NAME, RUN_MANAGER.REPORTING_PERIOD, SUM(VALUE) As VALUE
FROM DATA
INNER JOIN RUN_MANAGER
ON DATA.RUN_NUMBER=RUN_MANAGER.RUN_NUMBER
WHERE RUN_MANAGER.NAME='A'
GROUP BY ID,RUN_MANAGER.NAME
ORDER BY SUM(VALUE) DESC) AS T1
INNER JOIN (
SELECT ID , RUN_MANAGER.NAME AS NAME, RUN_MANAGER.REPORTING_PERIOD, SUM(VALUE) As VALUE
FROM DATA
INNER JOIN RUN_MANAGER
ON DATA.RUN_NUMBER=RUN_MANAGER.RUN_NUMBER
WHERE RUN_MANAGER.NAME='A'
GROUP BY ID,RUN_MANAGER.NAME
ORDER BY SUM(VALUE) DESC) AS T2
ON T1.ID=T2.ID+1
这不是一个重复的问题。问题是,这个问题基于Access SQL,而且我没有任何增量上升行。
答案 0 :(得分:1)
如果你有像t
这样的表格:
ID NAME VALUE
1000000090 A 2295175
1000000974 B 1942753
1000015555 C 1887965
1000004864 D 1310400
1000015557 E 972838
您可以使用此查询:
SELECT *
FROM t
WHERE
(SELECT SUM(VALUE) FROM t ti WHERE ti.Name <= t.Name) < (SELECT SUM(VALUE) FROM t ti) * 0.75
为此:
ID NAME VALUE
1000000090 A 2295175
1000000974 B 1942753
1000004864 D 1310400