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

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

kNOwAnswer 2022. 3. 8. 23:42

수강한 강의

Part 4. SQL

Chapter 04 문제풀이
- 분기문(case-when)
- 집합 연산(union)
- 집합 연산(union all)
- 서브 쿼리(column)
- 서브 쿼리(from)
- 서브 쿼리(where)

학습 후기

1. case when 문제

판매 가능한 제품들의 재고 파악을 위해 2020년 2월에 생산된 문구류 제품들의 제품명과 제품들의 총생산량을 출력하시오. (제품 코드는 001 가위, 002 풀, 003 공책, 004 볼펜, 005 지우개이다.)

위 문제를 보고 일단 제품명끼리 묶어 총생산량을 구해야 하므로 group by 제품 코드를 사용하고, 제품명을 나타내기 위해 case when을 통해 제품 코드에 따라 제품명을 매치해 주어 쿼리에 나타낸다.

select
    case inumber
        when 'I1001' then '가위'
        when 'I1002' then '풀'
        when 'I1003' then '공책'
        when 'I1004' then '볼펜'
        when 'I1005' then '지우개'
    end as inumber
    , sum(pcount)
from
    tproduction
where
    to_char(pdate, 'YYYYMMDD') like '202002%'
    and inumber like 'I100%'
group by
    inumber;

 

2. union 문제

제품이 한 번이라도 주문되었거나, 반품이 한 번이라도 발생한 월의 정보를 중복을 제거하고 출력하시오.

일단 주문 테이블과 반품 테이블이 따로 있기에 중복 제거를 사용하여 두 테이블을 합치려면 union을 사용한다.

또 월만 출력하면 되기 때문에 각 테이블에 날짜 데이터에서 월 만 가지고 group by 하여 표시한다.

select
    to_char(odate, 'MM')
from
    torder
group by
    to_char(odate, 'MM')
    
union

select
    to_char(rdate, 'MM')
from
    treturn
group by
    to_char(rdate, 'MM');

 

3. union all 문제

여태까지 회사에 입사했던 사람들의 총 인원 수와 연도별 입사한 직원 수를 출력하시오.

입사했던 사람들의 총인원수는 직원 테이블의 총 수를 count를 사용하여 구하고, 연도별로 입사한 직원 수를 알기 위해 입사일을 연도별로 group by 하고 직원수를 count 하여 두 테이블의 결과를 union all로 한꺼번에 출력한다.

select
    '총 인원수' as year,
    count(*)
from
    temployee
union all
select
    to_char(startdate, 'YYYY') as year,
    count(*)
from
    temployee
group by
    to_char(startdate, 'YYYY')
order by
    year;

4. from절에 있는 서브 쿼리

20년 01월 01일부터 20년 12월 31일까지 생산된 제품들의 제품 코드와 총생산량을 총생산량이 많은 순서대로 출력하시오.

일단 where 절에 기간을 필터 하고 제품 코드로 group by 하여 총생산량을 제품 코드 별로 sum 해서 나온 결과 테이블을 총 생산량 순으로 다시 정렬하여 출력한다.

select
    t.inumber,
    t.pcount
from
    (
    select
        inumber,
        sum(pcount) as pcount
    from
        tproduction
    where
        to_char(pdate, 'YYYY') = '2020'
    group by
        inumber) t
order by
    t.pcount desc;

수강 인증샷

https://bit.ly/37BpXiC

 

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

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

fastcampus.co.kr

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

반응형