首页 > 试题广场 >

数据库 有一个银行存款数据库,包括以下表:

[问答题]

数据库

有一个银行存款数据库,包括以下表:


客户信息表Customer, 客户号为主键

客户号

Cid

客户姓名

CName


存款交易表Deposit,每次存款会增加一条记录,流水号为主键

存款日期

TradeDate

流水号

Did

客户号

Cid

存款金额

Amount

营业网点代码

DeptId

注:存款日期2009110日用整数20090110 表示


营业网点信息表Dept, 营业网点代码为主键

营业网点代码

DeptId

网点名称

DName


写出完成下列要求的SQL语句:

1)  查找客户号“88888888”的2009全年的存款流水,按日期升序排列

2)  针对上面的查询要求,为Deposit表创建一个索引idx_Deposit

3)  输出整个银行2009年全年各网点名称及对应的存款总额。

4)  列出曾经有多笔(2笔或者大于2笔)存款的客户号。

5)  列出客户信息表中没有存款交易的客户,输出客户号和客户姓名。

select Did from Deposit where Cid=88888888 and TradeDate between 20090101 and 20091231 order by TradeDate asc;
发表于 2019-09-29 21:06:38 回复(0)
说实话看参考答案的第三题每太懂为什么要min(Dname)和Group by Deptid
我觉得这样写会容易看懂些
Select DName, sum(Amount) as Amount

from Deposit A, Dept B

Where A.DeptId = B.DeptId

And TradeDate >= 20090101 and TradeDate <= 20091231

Group by DName
结果应该也是对的

发表于 2020-10-08 23:56:10 回复(0)
1、select * from Deposit where cid =’88888888’and tradedate between 20190101 and 20091231 order by asc

2、①create index idx_Deposit on table Deposit(cid)   ②alter table Deposit add index idx_Depostit(cid)

3、Select b.DName, count(Amount) from (select a.*, b.DName  from Deposit ajoin Dept b on a.Deptid=b.Deptid) where TradeDate between 20090101 and 200901231 group by b.DName

4、Select Cid from Depostit group by Cid having count(Amount)>=2

5、select a.Cid, a.C.Name from Customer where a.Cid not in (select a.Cid from Customer a left join Deposit b on a.Cid=b.Cid)
编辑于 2020-03-20 17:13:17 回复(0)

  1、selecet Did from Deposite where Cid = 88888888and TreeData between  

20090101 and 20191231 order by TreeData ASC;

  2、 create unique index idx_Deposit on Deposit

   3、  select DName,Sum(Amount) from Deposit,Dept where Deposit.DeptId = Dept.DeptId and TreeDate between 20090101 and 20091231 group by DeptId

   4、 select Cid from Customer,Deposit where Customer.Cid = Deposit.Cid group by Deposit.Did having count(*)>=2

   5、 select Customer.Cid, Customer.CName from CustomerDeposit where no exists (select Cid from Customer,Deposit where Customer.Cid = Deposit.Cid and Deposit.Amount = 0)

发表于 2020-03-11 11:50:54 回复(2)
5. select Cid, CName from Customer where Cid not in (select Cid from Deposit); 
发表于 2020-09-19 01:28:35 回复(0)
1.

Select Did from deposit where cid=’88888888’ and between  

20090101 and 20191231 order by tradedate asc
2.

CREATE  INDEX idx_Deposit ON Deposit (cid) 

3.

Select dname sum(amount) from deposit,dept where deposit.deptid=dept.deptid and deposit.tradedate between 20090101 and 20191231 group by dname

4.

Select cid from deposit group by cid having count(did) >2

5.

Select cid,cname from customer where not exist(select 1 from deposit where customer.cid = deposit.cid)

发表于 2020-03-20 03:08:20 回复(0)