1

我有一张桌子,不同的参与者在几天内获得多盒药物。我正在尝试创建一个频率表,显示按盒子数量分配给参与者的药物数量。
在此处输入图像描述

我正在寻找的结果是 -

2盒=1(因为只有Lynda一共得到了2盒),4盒=2(因为Ryan和Rinky加起来药盒一共得到了4盒)

请让我知道在这种情况下哪种方法最好。谢谢你的帮助。
-名字

4

3 回答 3

1

我想你想要:

SELECT t.SumOf, Count(t.[PARTICIPANT ID]) AS CountOf
FROM (SELECT Table1.[PARTICIPANT ID], Sum(Table1.MEDICINE_BOX) AS SumOf
FROM Table1
GROUP BY Table1.[PARTICIPANT ID])  AS t
GROUP BY t.SumOf;

其中 table1 是您的表的名称。

于 2012-08-29T21:08:30.473 回答
0

如果你的表是这样的:

medicine_dispense
participantID   date    amount_boxes
ABC             8/29/12  1
ABC             8/30/12  2
XYZ             8/29/12  1
XYZ             8/30/12  1

然后是这样的查询:

select
amount_boxes, count(participantID)
from
medicine_dispense

应该管用

于 2012-08-29T21:25:52.363 回答
0

我将使用通用 SQL。您可以将 SQL 粘贴到 SQL 视图中的 Access 查询中。(您可能必须删除 CHECK() 约束。)

create table participant_meds (
  participant varchar(10) not null,
  distribution_date date not null default current_date,
  num_boxes integer not null check (num_boxes > 0),
  primary key (participant, distribution_date)
);

insert into participant_meds values ('Ryan', '2012-02-03', 1);
insert into participant_meds values ('Ryan', '2012-06-07', 3);
insert into participant_meds values ('Rinky', '2012-02-28', 4);
insert into participant_meds values ('Lynda', '2012-03-04', 2);
insert into participant_meds values ('Russ', '2012-04-05', 2);
insert into participant_meds values ('Russ', '2012-05-08', 2);
insert into participant_meds values ('Russ', '2012-06-12', 2);

结果数据,排序,用于复制/粘贴。

participant distribution_date   num_boxes
Lynda   2012-03-04  2
Rinky   2012-02-28  4
Russ     2012-04-05 2
Russ     2012-05-08 2
Russ     2012-06-12 2
Ryan     2012-02-03 1
Ryan     2012-06-07 3

此查询为您提供每个参与者的总箱子数。

select sum(num_boxes) boxes, participant
from participant_meds
group by participant;

6;"Russ"
2;"Lynda"
4;"Ryan"
4;"Rinky"

在 FROM 子句中使用该查询,就像它是一个表一样。(我会考虑将该查询存储为视图,因为我怀疑每个参与者的框总数可能有用。此外,Access 历来擅长优化使用视图的查询。)

select boxes num_boxes, count(participant) num_participants
from (select sum(num_boxes) boxes, participant
      from participant_meds
      group by participant) total_boxes
group by num_boxes
order by num_boxes;

num_boxes  num_participants
--
2          1
4          2
6          1
于 2012-08-29T21:45:51.370 回答