0% found this document useful (0 votes)
6 views

hw4

Uploaded by

nerijaross542
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

hw4

Uploaded by

nerijaross542
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

1.

B
2. C
3. C
4. B
5. A

1.
select i.ID_NUMBER as "身份证号", CONCAT(i.LAST_NAME, i.FIRST_NAME) as "姓名全
名", c.CUST_ID as "客户编号", a.ACCOUNT_ID as "账户编号", b.NAME as "开户行名称",
a.AVAIL_BALANCE as "可用余额", p.NAME as "产品名称", pt.NAME as "产品类型名称"from
individual ijoin customer c on i.CUST_ID = c.CUST_IDjoin account a on c.CUST_ID =
a.CUST_IDjoin branch b on a.OPEN_BRANCH_ID = b.BRANCH_IDjoin product p
on a.PRODUCT_CD = p.PRODUCT_CDjoin product_type pt
on p.PRODUCT_TYPE_CD = pt.PRODUCT_TYPE_CDwhere i.FIRST_NAME = '东' and i.LA
ST_NAME = '吕';
2.
CREATE VIEW customer_view ASSELECT CASE WHEN c.CUST_TYPE_CD = 'I'
THEN CONCAT(i.LAST_NAME, i.FIRST_NAME) ELSE CONCAT(o.LAST_NAME,
o.FIRST_NAME) END AS " 全 名 ", CASE WHEN c.CUST_TYPE_CD = 'I' THEN
NULL ELSE o.TITLE END AS "职位名称" FROM customer cLEFT JOIN individual
i ON c.CUST_ID = i.CUST_IDLEFT JOIN officer o ON c.CUST_ID = o.CUST_ID;3.
SELECT br.NAME AS " 银行名称", CASE WHEN c.CUST_TYPE_CD = 'I' THEN
CONCAT(i.LAST_NAME, i.FIRST_NAME) ELSE CONCAT(o.LAST_NAME,
o.FIRST_NAME) END AS "姓名全名", a.AVAIL_BALANCE AS "账户余额"FROM account
aJOIN customer c ON a.CUST_ID = c.CUST_IDLEFT JOIN individual i ON c.CUST_ID =
i.CUST_ID LEFT JOIN officer o ON c.CUST_ID = o.CUST_ID JOIN branch br ON
a.OPEN_BRANCH_ID = br.BRANCH_IDWHERE a.AVAIL_BALANCE = ( SELECT
MAX(a2.AVAIL_BALANCE) FROM account a2 WHERE
a2.OPEN_BRANCH_ID = a.OPEN_BRANCH_ID);

在 SQL 查询中,IN 和 NOT IN 是用于过滤的条件子句。它们的执行顺序如下:IN:用于检查某个值是否存在于


一个给定的子查询或列表中。NOT IN:用于检查某个值是否不存在于一个给定的子查询或列表中。执行顺序:子查
询优先:当 IN 或 NOT IN 里面包含子查询时,数据库首先会执行子查询,计算出子查询的结果集。外部查询执行:
计算完子查询后,外部查询使用 IN 或 NOT IN 来过滤数据。对于每一行数据,系统会检查该行是否在子查询结果
中(IN)或者不在子查询结果中(NOT IN)。4.
SELECT i.ID_NUMBER, CONCAT(i.LAST_NAME, i.FIRST_NAME) AS " 全
名 "FROM individual iWHERE EXISTS ( SELECT 1 FROM account a1
WHERE a1.CUST_ID = i.CUST_ID AND a1.PRODUCT_CD = 'CS' )AND NOT
EXISTS ( SELECT 1 FROM account a2 WHERE a2.CUST_ID = i.CUST_ID
AND a2.PRODUCT_CD = 'RS' EXCEPT SELECT 1 FROM account a3
WHERE a3.CUST_ID = i.CUST_ID AND a3.PRODUCT_CD = 'CS');
5.
SELECT a.ACCOUNT_IDFROM account aWHERE a.ACCOUNT_ID NOT IN (
SELECT a1.ACCOUNT_ID FROM account a1 LEFT JOIN acc_transaction at ON
a1.ACCOUNT_ID = at.ACCOUNT_ID WHERE at.TXN_DATE LIKE '2013%');

6.
a.select distinct sudent.ID, student.name from student join takes on student.ID = takes.IDjoin
course on takes.course_id = course.course_idwhere course.dept_name = 'Comp.Sci.';b.select
student.ID, student.namefrom student where student.ID not in (select student.IDfrom student join
takes on student.ID = takes.IDwhere takes.year < 2017);c.select dept_name,max(salary)from
instructororder by dept_name;d.with max_salary(dept_name, max_salary) as (select
dept_name,max(salary)from instructororder by dept_name)select min(max_salary)from
max_salary;7.
a.select e.ID, e.person_namefrom employee e join works w on e.ID = w.IDjoin company c
on w.company_name = c.company_namewhere e.city = c.city;b.select e.ID, e.person_namefrom
employee e join manages m on e.ID = m.IDjoin employee m_e on m.manager_id = m_e.idwhere
e.street = m_e.street ande.city = m_e.city;c.select e.ID, e.person_namefrom employee e join works
w on e.ID = w.IDjoin company c on w.company_name = c.company_namehaving w.salary >
(select avg(salary)from employee e1 join works w1 on e.ID = w.IDjoin company c1 on
w1.company_name = c1.company_namewhere c1.company_name =c.company_name );d.select
company_name, sum(salary) as total_payrollfrom worksgroup by company_nameorder by
total_payroll asclimit 1;
8.
a.update worksset salary = salary * 1.1where company_name = "First Bank
Corporation";b.update workesel salary = salary * 1.1where company_name = "First Bank
Corporation" and ID in(select manager_id from manages);c.delete from workswhere
works.company_name = "Small Bank Corporation";
9.
create table employee (
id varchar(8),
person_name varchar(30) not null,
street varchar(40),
city varchar(30),
primary key (id)
);

create table company (


company_name varchar(40),
city varchar(30),
primary key (company_name)
);

create table works (


id varchar(8),
company_name varchar(40),
salary numeric(10,2) check (salary > 10000),
primary key (id),
foreign key (id) references employee(id)
on delete cascade,
foreign key (company_name) references company(company_name)
on delete cascade
);

create table manages (


id varchar(8),
manager_id varchar(8),
primary key (id),
foreign key (id) references employee (id),
foreign key (manager_id) references employee (id)
);

You might also like