如何在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)
请注意,这仅显示有捐款的捐助者人数。没有承诺的将不会显示。
显示每个捐助者的认捐数。包括捐助者 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)
请注意,这仅显示有捐款的捐助者人数。没有承诺的将不会显示。