hw4
hw4
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);
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)
);