2

我有两张桌子:

**Users**
UserID | UserName | Password

**Task**
TaskId | Hours | UserID (Empty as of now)

我需要UserID在任务表中分配任务,以便所有用户获得偶数小时的任务。我在数据库中有大约 5000 个任务,Hours列值范围从 1 到 30。

如何使用 SQL Server 查询或 LINQ 来完成?

4

1 回答 1

2

这听起来像是分区问题(请参阅此处),您尝试分配任务以使每个用户的小时数总和相同。

在某些情况下,问题很容易解决(例如,如果所有任务的长度为 1 小时)。在其他情况下,问题没有解决方案(例如,如果用户多于任务)。作为提示,当一个问题有如此极端的变化时,它可能无法通过使用 SQL 查询来解决。

当然,您可以在表格中表示数据。并且,您可以在某些逻辑复杂的查询上使用游标,并调用此 SQL。

维基百科页面描述了几种不同的可能算法。祝你好运。

于 2013-08-06T20:43:53.823 回答