공부/패스트 캠퍼스 챌린지

코딩테스트 - 패스트캠퍼스 챌린지 46일차

kNOwAnswer 2022. 3. 10. 23:56

수강한 강의

Part 4. SQL

Chapter 04 문제풀이
- 조인(inner join)
- 조인(outer join)

학습 후기

1. left outer join 문제
2020년 1월의 제품 별 생산량의 순위를 확인하기 위하여 제품명과 생산량을 순위를 매겨 출력하시오.
(모든 제품이 출력되어야 하며 공동 순위가 있다면 다음 순위는 공동 순위의 수만큼 밀려나고 생산되지 않은 제품
은 제일 마지막 순위로 결정되어야 한다)

null을 가장 마지막 순위로 결정하기 위해 order by에 nulls last를 추가해준다.

select * from titem;
select * from tproduction;

select
    i.iname,
    p.pcount,
    rank() over (order by p.pcount desc nulls last)
from
    titem i
left outer join tproduction p
    on i.inumber = p.inumber
    and to_char(p.pdate, 'MM') = '01';


2. inner join 문제
 부서별로 생산하는 제품들의 총생산량을 부서명과 함께 순위를 매겨서 출력하세요
(부서명, 부서에서 생산하는 제품의 총 생산량, 순위가 나와야 하며 공동 순위(ex 공동 1등)가 있어도 다음 순위는 순차적으로 매겨진다.

select * from tdepartment;
select * from tproduction;
select * from temployee;

select
    d.dname,
    sum(p.pcount),
    row_number () over (order by sum(p.pcount) desc)
from
    tproduction p
inner join temployee e
    on p.enumber = e.enumber
inner join tdepartment d 
    on d.dnumber = e.dnumber
group by d.dname;


3. outer join 문제
시장조사를 위하여 불량을 제외한 반품 내역을 가진 고객들의 주변에 거주하는 직원들의 명단을 출력하시오
(고객들의 주소와 고객명단, 고객 주변에 거주하는 직원 명단은 전부 출력되어야 한다) 

select * from temployee;
select * from torder;
select * from tcustomer;
select * from treturn; 
select * from treturnreason;

select 
    a.caddr,
    a.cname,
    b.ename
from
(
    select
        *
    from
        torder o
    inner join tcustomer c 
        on o.cnumber = c.cnumber
    inner join treturn r
        on o.onumber = r.onumber
    inner join treturnreason rr 
        on r.rrnumber = rr.rrnumber
    where rr.rreason <> '불량'
) a
left outer join temployee b 
    on a.caddr = b.eaddr;

수강 인증샷

https://bit.ly/37BpXiC

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

반응형