[프로그래머스|SQL] SELECT, Sub-query, GROUP BY

Sophie·2024년 10월 23일

[TIL] 프로그래머스 SQL 연습

  • 1. SELECT (Sub-query)

    • 원본 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131535
    • 문제 : USER_INFO 테이블에서 2021년에 가입한 회원 중 나이가 20세 이상 29세 이하인 회원이 몇 명인지 출력하는 SQL문을 작성해주세요.
    • 풀이 :
      1) joined 열에서 연도 문자열만 뽑아낸 후 joined_year 열을 추가 생성
      2) Sub query 로 1)의 쿼리를 감싼 후 joined_year를 count
      3) 문제의 조건인 가입연도 2021년, 나이 20~29세로 WHERE 절 작성
      SELECT *, substr(joined,1,4) joined_year
      FROM USER_INFO
  • 최종 답안 :
      SELECT COUNT(joined_year)  
      FROM
      (
          SELECT *, substr(joined,1,4) joined_year
          FROM USER_INFO
      ) a
      WHERE AGE BETWEEN 20 AND 29 AND joined_year='2021'

  • 2. GROUP BY

    • 원본 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/132202
    • 문제 : APPOINTMENT 테이블에서 2022년 5월에 예약한 환자 수를 진료과코드 별로 조회하는 SQL문을 작성해주세요. 이때, 컬럼명은 '진료과 코드', '5월예약건수'로 지정해주시고 결과는 진료과별 예약한 환자 수를 기준으로 오름차순 정렬하고, 예약한 환자 수가 같다면 진료과 코드를 기준으로 오름차순 정렬해주세요.
    • 최종 답안 : ! 개수 COUNT 시 특정 열 언급할 필요 없을 때 기본은 COUNT(*)
      SELECT MCDP_CD AS '진료과코드', COUNT(*) AS '5월예약건수'
      FROM APPOINTMENT
      WHERE APNT_YMD >= '2022-05-01' AND APNT_YMD < '2022-06-01'
      GROUP BY MCDP_CD
      ORDER BY COUNT(*) ASC, MCDP_CD ASC

0개의 댓글