选择每个唯一用户的50%行

时间:2015-03-20 04:56:25

标签: sql ms-access

这就是我的表格

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作为访问查询。

编辑:

相关问题:

Query to Return Top Items for Each Distinct Column Value

1 个答案:

答案 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) )