首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS-Access:将记录分配给4个人,每个人的记录数相同

MS-Access:将记录分配给4个人,每个人的记录数相同
EN

Stack Overflow用户
提问于 2014-04-23 02:57:37
回答 1查看 331关注 0票数 0

任务是假设我在cutomer表中有4000 (或n)个客户ID,我需要将它们分配给4个人,以便每个人都能处理1000 (或N/4)个客户ID,我尝试了分区,但它给出的结果非常错误,每条记录中有5:。

代码语言:javascript
复制
SELECT CUSTOMER_ID, Partition (CUSTOMER_ID, 1, 4, (SELECT ROUND(Sum(B.C)/4,0) AS   
Employee_ID FROM (SELECT CUSTOMER_ID, Count(CUSTOMER_ID) AS C FROM CUSTOMER GROUP BY 
CUSTOMER_NAME) AS B)/4)
FROM CUSTOMER
GROUP BY CUSTOMER_ID;
EN

回答 1

Stack Overflow用户

发布于 2014-04-23 04:32:42

这里有一种方法可以做到。对于测试数据

代码语言:javascript
复制
CUSTOMER_ID
-----------
          1
          2
          4
          7
          8
         11
         13
         14
         15
...

查询

代码语言:javascript
复制
SELECT c1.CUSTOMER_ID, COUNT(*) AS RankIndex
FROM CUSTOMER c1 INNER JOIN CUSTOMER c2 ON c1.CUSTOMER_ID >= c2.CUSTOMER_ID
GROUP BY c1.CUSTOMER_ID

将产生

代码语言:javascript
复制
CUSTOMER_ID  RankIndex
-----------  ---------
          1          1  
          2          2
          4          3
          7          4
          8          5
         11          6
         13          7
         14          8
         15          9
...

因此,如果我们在COUNT(*)上做一些模4运算,并将其命名为Employee_ID,如下所示

代码语言:javascript
复制
SELECT c1.CUSTOMER_ID, ((COUNT(*) - 1) Mod 4) AS Employee_ID
FROM CUSTOMER c1 INNER JOIN CUSTOMER c2 ON c1.CUSTOMER_ID >= c2.CUSTOMER_ID
GROUP BY c1.CUSTOMER_ID

我们会得到

代码语言:javascript
复制
CUSTOMER_ID  Employee_ID
-----------  -----------
          1            0  
          2            1
          4            2
          7            3
          8            0
         11            1
         13            2
         14            3
         15            0
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23227978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档