这就是我的表格
Id | User | TestedGame | GameBuildID | TestType |TDate
1| Chan | Game One | GBI010115 | Maps | 01-02-2015
2| TedD | Game two | GBI010615 | Maps | 01-22-2015
3| Chan | Game One | GBI010315 | Maps | 01-12-2015
4| John | Game thr | GBI010715 | Grap | 01-02-2015
5| Chan | Game two | GBI010415 | Maps | 01-07-2015
6| Samy | Game thr | GBI010115 | Grap | 01-02-2015
表会运行1000行。我希望字段名称是自我解释的。这是一张跟踪测试游戏的表格。构建id,测试游戏的一部分,游戏名称,测试类型和测试日期被保存。 ID是唯一的,是主键。
该表保存在accdb文件中。
问题:
如何选择每个用户50%的测试?
SQL
SELECT TOP 50 PERCENT User, Id, TestedGame, testtype, GameBuildID, Tdate FROM Table Where Tdate >#01-01-2015# and Tdate < #31-01-2015# ORDER BY rnd(Id)
然而,这并不能为不同的用户提供平等的分配。
当前输出:
我在一个月内完成所有测试的50%。用户分布不统一。例如。如果Chan每个月测试100个游戏版本,我不会得到50个Chan的游戏版本。如果一些新的测试人员只测试了2个游戏版本,我最终得不到该测试人员的结果。
预期输出
50% of Userone's rows
50% of User two's rows
.
.
.
50% of nth user's rows
我正在运行sql作为访问查询。
编辑:
相关问题:
答案 0 :(得分:0)
尝试这样的子查询(航空代码):
SELECT User, Id, TestedGame, testtype, GameBuildID, Tdate FROM Table Where ID IN(
SELECT TOP 50 PERCENT P.Id FROM Table AS P Where P.User=Table.User AND Tdate >#01-01-2015# and Tdate < #31-01-2015# ORDER BY rnd(Id)
)