민듀키티

프로그래머스 SQL 코딩테스트 (LEVEL 4 - 2) 본문

Coding Test/SQL

프로그래머스 SQL 코딩테스트 (LEVEL 4 - 2)

민듀키티 2023. 4. 22. 12:19

🔴  문제 1 : 주문량이 많은 아이스크림들 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/133027

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 
정답 )

SELECT a.FLAVOR	
FROM FIRST_HALF as a, JULY as b
WHERE a.FLAVOR= b.FLAVOR
GROUP BY a.FLAVOR
ORDER BY sum(a.TOTAL_ORDER) + sum(b.TOTAL_ORDER) desc limit 3
  • FLAVOR이 외래키이기 때문에 FLAVOR 칼럼을 기준으로 테이블을 연결해줌
  • 총주문량과 7월의 총주문량을 더한 값 중 상위 3개만 추출하기 때문에, ORDER BY로 정렬시켜주고, limit 3 이라는 조건을 줌

 


🔴  문제 2 : 취소되지 않은 진료 예약 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/132204

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

- 주의해야할 점 : 테이블이 3개나 되기 때문에 조인할 때 칼럼명을 똑바로 봐야한다. 이것만 주의하면 조건 주는 것은 아주아주 쉬운 편입니다.
 
 
정답 )

SELECT c.APNT_NO, a.PT_NAME, a.PT_NO, b.MCDP_CD, b.DR_NAME, c.APNT_YMD
FROM PATIENT as a, DOCTOR as b, APPOINTMENT as c
WHERE a.PT_NO = c.PT_NO and b.DR_ID = c.MDDR_ID
and DATE_FORMAT(c.APNT_YMD,"%Y%m%d") = 20220413
and c.APNT_CNCL_YMD is null
and b.MCDP_CD = 'CS'
ORDER BY c.APNT_YMD

 


🔴  문제 3 : 저자 별 카테고리 별 매출액 집계하기

https://school.programmers.co.kr/learn/courses/30/lessons/144856

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

- 주의해야할 점 : 3가지 이상의 테이블이 나올 때는 join 칼럼 정의 헷갈리지 않도록 해야함 !
 
정답 )

SELECT a.AUTHOR_ID,b.AUTHOR_NAME,a.CATEGORY, 
    sum(c.SALES * a.PRICE)as TOTAL_SALES
FROM BOOK as a, AUTHOR as b, BOOK_SALES as c
WHERE a.AUTHOR_ID = b.AUTHOR_ID	
and a.BOOK_ID = c.BOOK_ID
and DATE_FORMAT(SALES_DATE, "%Y%m") = 202201
GROUP BY a.AUTHOR_ID, a.CATEGORY
ORDER BY a.AUTHOR_ID, a.CATEGORY desc

 


🔴 문제 4 : 보호소에서 중성화한 동물

https://school.programmers.co.kr/learn/courses/30/lessons/59045

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 
정답 ) 

SELECT a.ANIMAL_ID, a.ANIMAL_TYPE, a.NAME
FROM ANIMAL_INS as a, ANIMAL_OUTS as b
WHERE a.ANIMAL_ID = b.ANIMAL_ID	
and a.SEX_UPON_INTAKE like "Intact%"
and (b.SEX_UPON_OUTCOME like "Spayed%" or b.SEX_UPON_OUTCOME like "Neutered%")

 
주요함수정리)

  • _ : 글자숫자를 정해줌(EX 컬럼명 LIKE '홍_동')
  • % : 글자숫자를 정해주지않음(EX 컬럼명 LIKE '홍%')

 

  • '홍'으로 시작하는 사람  : LIKE '홍%'
  • '홍'이 들어가는 사람 : LIKE '%홍%'
  • '홍'으로 끝나는 사람 : LIKE '%홍'