【发布时间】:2020-07-09 14:35:45
【问题描述】:
我现在正在处理一个包含两个变量的表 - HouseholdID 和 DonationID。我想计算每次捐赠的唯一家庭数量,所以我想以某种方式过滤我的表格,以便我只有第一次家庭捐赠给基金的结果。
在这个^案例中,我想过滤结果,将琼斯捐赠给癌症基金,琼斯捐赠给麦当劳叔叔基金,史密斯捐赠给麦当劳叔叔基金。如何在 SQL 中指定它?
【问题讨论】:
我现在正在处理一个包含两个变量的表 - HouseholdID 和 DonationID。我想计算每次捐赠的唯一家庭数量,所以我想以某种方式过滤我的表格,以便我只有第一次家庭捐赠给基金的结果。
在这个^案例中,我想过滤结果,将琼斯捐赠给癌症基金,琼斯捐赠给麦当劳叔叔基金,史密斯捐赠给麦当劳叔叔基金。如何在 SQL 中指定它?
【问题讨论】:
你一个使用聚合:
select household, donation, min(date)
from donations
group by household, donation;
如果表中有其他列,那么过滤——使用相关子查询或row_number()——是合适的:
select d.*
from donations d
where d.date = (select min(d2.date)
from donations d2
where d2.household = d.household and d2.donation = d.donation
);
【讨论】:
如果您真的只是在寻找唯一计数:
select Donation, count(distinct Household) as Households from donations group by Donation
【讨论】: