[코테] 프로그래머스 SQL 고득점 Kit - SELECT 17-18번

ʕ•ﻌ•ʔ·2024년 3월 25일
0

코딩테스트 (SQL)

목록 보기
13/31
post-thumbnail

❇️ SELECT

  • 💡 조회

    • select 열 from 테이블 where 조건 order by asc / desc;

  • 💡 조건

    • 다중 : where (조건1) and (조건2)
    • 문자열 : where 열 like '문자'
      • where 열 like '____03___'
      • where 열 like '%사원'
    • 널 제외 : where 열 is not null

  • 💡 날짜 변환

    • select 열1, 열2, date_format(날짜열, '%Y-%m-%d') as 날짜열 from 테이블

  • 💡 정렬

    • 열1 오름차순, 같으면 열2 내림차순 : order by 열1 asc, 열2 desc;

  • 💡 집계함수

    • select 집계함수(열1) from 테이블이름;
      - 행 개수 : count( )
      - 합 : sum( )
      - 평균 : avg( )
      - 최소 : min( )
      - 최대 : max( )

  • 💡 그룹화

    • select 열1, 열2 from 테이블 group by 열1, 열2 having 조건 (order by 열1 정렬);
      - 그룹화 : GROUP BY 열 HAVING 조건
      - (ex) HAVING COUNT(*) > 1
      - GROUP BY 열 : 열에 대해 같은 값을 가지는 친구들끼리 그룹별로 묶임
      - (실제 출력은 그 중 한 행만 대표로 출력. 실제로는 그룹으로 존재)
      - 정렬 : ORDER BY ▶ (ASC)/DESC

  • 💡 합치기

    • 구문1 union 구문2;
      - union : select 구문1의 결과와 구문2의 결과를 합쳐 출력

  • 💡 NULL 값으로 출력

    • select 열1, 열2, null as 열3;
      - 열3을 행이름으로 두고, 값은 null로

  • 💡 열의 최소 값 가진 행 출력

    • select 열1 from 테이블이름 where (열1 = (select min(열1) from 테이블이름));
      - where 조건에도 select 사용 가능
      - 단 (select 구문)을 꼭 괄호로 감싸줘야함

  • 💡 숫자 값 비교

    • 열 between 수1 and 수2
      - 수1<=열<=수2 의미
      - 열>=수1 and 열<=수2 결과와 동일

  • 💡 반올림

    • select round((열), 반올림할 소수 자리)

  • 💡 빈 값 처리

    • select coalesce(열, '대체할 값') as 열 from 테이블이름

  • 💡 테이블 합치기

    • select a.열1, b.열2 from 테이블1 as a
      inner / left / right join 테이블2 as b on a.기준열 = b.기준열
      where ... group by ... having ... order by ...
    • 테이블1 (별칭: a) + 테이블2 (별칭: b) -> 기준열 같으면 합치기
    • inner join : 두 테이블 모두 있는 열만 살리기
    • left join : 왼쪽 테이블의 열은 모두 살리고, 오른쪽 테이블 열은 있는 것만
    • right join : 오른쪽 테이블 열 모두 살리고, 왼쪽 테이블 열은 있는 것만

1. SELECT 17번

강원도에 위치한 생산공장 목록 출력하기


SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY
WHERE (ADDRESS LIKE '강원도 %')
ORDER BY FACTORY_ID ASC;

2. SELECT 18번

서울에 위치한 식당 목록 출력하기

  • INNER JOIN → ID 기준 그룹 묶기 → 그룹별 REVIEW_SCORE 평균 → 셋째자리 반올림

SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, ROUND(AVG(R.REVIEW_SCORE), 2) AS SCORE
FROM REST_INFO AS I
INNER JOIN REST_REVIEW AS R ON I.REST_ID = R.REST_ID
WHERE (ADDRESS LIKE '서울%')
GROUP BY I.REST_ID
ORDER BY SCORE DESC, FAVORITES DESC;
profile
김햄톨

0개의 댓글

관련 채용 정보