计算 MS Access 中按名称分组的唯一值

Posted

技术标签:

【中文标题】计算 MS Access 中按名称分组的唯一值【英文标题】:Count unique values grouped by name in MS Access 【发布时间】:2014-06-25 20:43:18 【问题描述】:

tech on the net 的练习#3 的答案正是我所需要的。但是通过我自己的经验和Jensen's answer to a similar question 我发现它不起作用。

我的数据如下所示:

my_table:
: Customer : Contract : Product : Date    :
: John     : 123      : Plate   : 12/5/13 :
: John     : 123      : Spork   : 12/5/13 :
: Jane     : 567      : Bowl    : 9/9/13  :
: Jane     : 789      : Plate   : 9/9/13  :
: Jane     : 789      : Spork   : 9/9/13  :
: Bob      : 234      : Plate   : 8/7/13  :
: John     : 345      : Plate   : 4/9/13  :
: John     : 345      : Sponge  : 4/9/13  :

我想要的是获得每个客户的唯一合同数量。

my_query
: Customer : Number of Contracts :
: Jane     : 2                   :
: John     : 2                   :
: Bob      : 1                   :

如果我只想要 2013 年 6 月至 2014 年 6 月(去年)的合同,那么我会得到:

my_query
: Customer : Number of Contracts :
: Jane     : 2                   :
: Bob      : 1                   :
: John     : 1                   :

提前致谢!

【问题讨论】:

【参考方案1】:

您需要使用子查询来获取不同的客户/合同组合,然后您可以对子查询进行分组以获取计数。

SELECT Customer, COUNT(*) AS contract_count
FROM
    (SELECT DISTINCT Customer, Contract
    FROM my_table) contract_data
GROUP BY Customer

如果你想做一个日期过滤,你可以在子查询中过滤。

SELECT Customer, COUNT(*) AS contract_count
FROM
    (SELECT DISTINCT Customer, Contract
    FROM my_table
    WHERE [Date] BETWEEN #6/1/2013# AND #6/1/2014#) contract_data
GROUP BY Customer

【讨论】:

以上是关于计算 MS Access 中按名称分组的唯一值的主要内容,如果未能解决你的问题,请参考以下文章

如何在postgres中按不同列删除空间和分组后获得唯一值

即使没有结果,如何在分组的 MS Access 报告中显示类别

分组最后一个值的 MS-Access 设计模式

分组值在 SQL (maria DB) 中按时间存储直到零,并与计数一起进行求和

在 sql (MS-Access) 中编写分组查询

MS Access 如何计算过滤报告上的唯一记录或值