如何在ORACLE sql中显示每个捐助者的捐款数?

How can I display the number of pledges made by each donor in ORACLE sql?

显示每个捐助者的认捐数。包括捐助者 ID、名字、姓氏和认捐数量。 以下是我到目前为止所拥有的,但它不起作用。它计算了捐助者总数,这是有道理的,但我需要计算每个捐助者做出了多少承诺。

select iddonor, firstname, lastname, (select distinct count(iddonor) from dd_pledge) as pledges from dd_donor;

下面是需要的表格:

CREATE TABLE DD_Donor (
idDonor number(4),
Firstname varchar2(15),
Lastname varchar2(30),
              Typecode CHAR(1),
Street varchar2(40),
City varchar2(20),
State char(2),
Zip varchar2(9),
Phone varchar2(10),
Fax varchar2(10),
Email varchar2(25),
              News char(1),
dtentered date DEFAULT SYSDATE,
CONSTRAINT donor_id_pk PRIMARY KEY(idDonor) );

CREATE TABLE DD_Pledge (
               idPledge number(5),
               idDonor number(4),
               Pledgedate DATE,
               Pledgeamt number(8,2),
               idProj number(5),
               idStatus number(2),
               Writeoff number(8,2),
               paymonths number(3),
               Campaign number(4),
               Firstpledge char(1),
               CONSTRAINT pledge_id_pk PRIMARY KEY(idPledge),
               CONSTRAINT pledge_idDonor_fk FOREIGN KEY (idDonor)
                       REFERENCES dd_donor (idDonor), 
               CONSTRAINT pledge_idProj_fk FOREIGN KEY (idProj)
                       REFERENCES dd_project (idProj),
               CONSTRAINT pledge_idStatus_fk FOREIGN KEY (idStatus)
                       REFERENCES dd_status (idStatus));   

这个效果更好吗?

select iddonor, firstname, lastname, count(dd_pledge.iddonor) 
from dd_donor 
    inner join dd_pledge on dd_doner.iddoner = dd_pledge.iddoner
group by firstname,lastname;

你应该加入表格并数数。

select d.idDonor, d.Firstname, d.Lastname, count(*) count
from DD_Donor d
join DD_Pledge p
on d.idDonor=p.idDonor
group by (d.idDonor, d.Firstname, d.Lastname)

请注意,这仅显示有捐款的捐助者人数。没有承诺的将不会显示。