-- 1전공(deptno1)이 101번인 학생들의 학생 이름과 지도교수 이름을 출력하세요
select from student;
select from professor;
select * from department;
select s.name, p.name
from student s join professor p
on s.profno = p.profno
where s.deptno1 = 101;
--정답
select s.name, p.name , d.DNAME
from student s join professor p on s.profno = p.profno
join department d on p.deptno= d.deptno;
--틀림
SELECT t.stu_name, t.pro_name, d.dname
from
(select s.name stu_name, p.name pro_name, p.DEPTNO
from student s join professor p
on s.profno = p.profno
where s.deptno1 = 101) t join department d
on t.deptno = d.deptno;
--not equi
select from gift;
select from customer;
-- 고객의 마일리지 포인트별로 받을 수 있는 상품을 조회하여 고객의 이름과 상품 명을 출력하세요.
select c.gname as 고객, c.point, g.gname as 상품명
from customer c join gift g
on c.point >= g.g_start and c.point < g.g_end;
select c.gname as 고객, c.point, g.gname as 상품명
from customer c, gift g
where c.point >= g.g_start and c.point < g.g_end;
-- 고객의 마일리지 포인트별로 받을 수 있는 상품을 조회하여 고객의 이름과 상품 명을 출력하세요. 필요 수량이 몇 개 인지
select count(t.상품명)
from
(select c.gname as 고객, c.point, g.gname as 상품명
from customer c join gift g
on c.point >= g.g_start and c.point < g.g_end) t
group by count(t.상품명);
--학생이름과 지도교수 이름을 출력하세요.단 지도교수가 없는 학생 명단도 함께 출력하세요.
select from student;
select from professor;
select s.name, p.name
from student s, professor p
where s.PROFNO = p.PROFNO(+);
select s.name, p.name
from student s left outer join professor p
on s.PROFNO = p.PROFNO;
select s.name, p.name
from student s, professor p
where s.PROFNO(+) = p.PROFNO;
select s.name, p.name
from student s right outer join professor p
on s.PROFNO = p.PROFNO;
select s.name, p.name
from student s full outer join professor p
on s.PROFNO = p.PROFNO;
--전공(deptno1)이 동일한 학생들의 이름과 전공 이름을 출력하세요
select from student;
select from department;
select
s.name,
s.deptno1,
d.dname
from student s join department d
on s.deptno1 = d.DEPTNO
and s.DEPTNO1 =(
select deptno1
from student
where name = 'Anthony Hopkins'
)
;
--Professor 테이블에서 입사일이 ‘Meg Ryan’ 교수보다 나중에 입사한 사람의 이름과 입사일, 학과명을 출력하세요
select from professor;
select from department;
select p.name, p.hiredate, d.dname
from professor p join department d
on p.DEPTNO = d.DEPTNO
and p.HIREDATE > (
select HIREDATE
from professor
where name = 'Meg Ryan'
)
;
--부서별로 가장 급여를 많이 받는 사원의 사원번호, 사원명, 급여, 부서번호를 조회하세요
select from emp;
select from dept;
select e.empno empno, e.ename ename, e.sal sal, d.deptno deptno
from emp e join dept d
on e.DEPTNO = d.DEPTNO
and e.sal in (select max(sal) from emp group by deptno)