从访问数据库中按年份获取不同的计数

Posted

技术标签:

【中文标题】从访问数据库中按年份获取不同的计数【英文标题】:Getting a distinct count by year from an access database 【发布时间】:2019-01-07 21:45:03 【问题描述】:

我的 SQL 很生疏,所以这可能不是那么复杂,但我似乎无法破解它。

我有一个包含两张表的数据库 - 一张包含患者的详细信息,另一张包含每位患者的就诊情况。 Patient_ID 是患者的唯一标识符,用于访问表中,我正在尝试提取不同患者的数量和他们的就诊总数(即患者 A 在 2018 年访问了 3 次)

我正在尝试获取每年访问过一个中心的不同个体患者的总数(访问表中的字段),并从患者表(性别、国家/地区等)中查看有关患者的信息。

我尝试了几个 count 和 distinct 函数,但都无法正常工作。下面是最后的尝试之一,但在这种情况下, distinct 函数实际上并没有显示不同的值(我做错了什么吗?)。它确实适用于其他查询...任何帮助将不胜感激。

SELECT DISTINCT Visits.Patient_ID, Patient.Gender, Patient.Village, Visits.Months_Of_Visit, Visits.Year
FROM Visits
INNER JOIN Patient ON Patient.Patient_ID=Visits.Patient_ID
WHERE Year='2018';

预期结果:

每月和每年的唯一患者 ID、患者性别、患者村。

【问题讨论】:

你试过“GROUP BY”子句吗? 样本数据和期望的结果会有所帮助。 【参考方案1】:

如果您想要每个患者每个村庄/月/年访问的次数:

SELECT Count(*) AS CountVisits, Visits.Patient_ID, Gender, Village, Months_Of_Visit, [Year]
FROM Visits
INNER JOIN Patient ON Patient.Patient_ID=Visits.Patient_ID
GROUP BY Patient_ID, Gender, Village, Months_Of_Visit, [Year];

如果您想要每个村庄/月/年的 DISTINCT 患者数量:

查询1:

SELECT DISTINCT Visits.Patient_ID, Gender, Village, Months_Of_Visit, [Year]
FROM Visits
INNER JOIN Patient ON Patient.Patient_ID=Visits.Patient_ID;

查询2:

SELECT Count(*) AS CountPerVillage, Village, Months_Of_Visit, [Year] 
FROM Query1 GROUP BY Village, Months_Of_Visit, [Year];

一体化:

SELECT Count(*) AS CountPerVillage, Village, Months_Of_Visit, [Year] 
FROM (SELECT DISTINCT Visits.Patient_ID, Village, Months_Of_Visit, [Year]
      FROM Visits INNER JOIN Patient ON Patient.Patient_ID=Visits.Patient_ID) AS Query1 
GROUP BY Village, Months_Of_Visit, [Year];

由于 Year 是保留字(它是一个内在函数),请用 [ ] 括起来或在字段引用中包含表名前缀。

【讨论】:

以上是关于从访问数据库中按年份获取不同的计数的主要内容,如果未能解决你的问题,请参考以下文章

如何获得最近 x 周数据的不同计数,但在红移中按周分组?

SQL:按条件从不同表中按计数排序

在python中按特定年份对数据进行分组

在 SQL 和 Access 中按年份并排数据比较

谓词,从 NSDate 中按年份过滤,产生一个 nil 日期和一个讽刺的 Xcode 错误

如何在R中按国家和年份查找最大值? [复制]