본문 바로가기
BackEnd/SQL

SQL문 연습 with 프로그래머스 (1) (MySQL)

by Chaedie 2023. 2. 8.
728x90

SQL문 with 프로그래머스 문제 답 (1)

SQL문을 연습해보았다.

공부방법은 프로그래머스 문제를 쉬운 문제 부터 풀면서 모르는 문법을 하나씩 체크하고 익혀나가는 것


Level 1 수준 (JOIN 이전 간단한 쿼리문)

SELECT

-- 코드를 입력하세요
SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID
FACTORY_ID FACTORY_NAME ADDRESS
FT19980003 (주)맛있는라면 강원도 정선군 남면 칠현로 679
FT20100003 (주)맛있는음료 강원도 원주시 문막읍 문막공단길 154
FT20100004 (주)맛있는국 강원도 평창군 봉평면 진조길 227-35
- SELECT xxx 하면 xxx가 컬럼인 테이블이 나온다.    
- FROM은 어떤 테이블에서 가져오는지,    
- WHERE은 조건    
- ORDER BY는 정렬 조건이다.    

WHERE

1) LIKE (문자열 찾기?)

WHERE절에는 여러가지가 있는데, 일단 위에 나온

WHERE ADDRESS LIKE ‘강원도%’

의 LIKE가 있다.

2) IS

-- 코드를 입력하세요
SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL

NAME 이 NULL인 애들만 찾아준다.

3) 부등호, 논리연산자, 여러 조건

-- 코드를 입력하세요
SELECT Count(*) AS USERS
FROM   USER_INFO
WHERE  ( AGE >= 20
         AND AGE <= 29 )
       AND JOINED LIKE '2021%'

USERS라는 이름으로, 데이터 갯수를 센다.

조건은 (AGE가 20이상 29이하) 이면서 JOINED가 ‘2021%’인 놈들이다.

NULL 값 치환 (IFNULL)

-- 코드를 입력하세요
SELECT WAREHOUSE_ID,
       WAREHOUSE_NAME,
       ADDRESS,
       IFNULL(FREEZER_YN, 'N') AS FREEZER_YN
FROM   FOOD_WAREHOUSE
WHERE  ADDRESS LIKE '경기도%'

SELECT문에서 IFNULL(’컬럼 이름’, ‘치환할 문자’) AS ‘표현할 문자’이런식으로 Null값을 치환해줄 수 있다.

ORDER BY

-- 코드를 입력하세요
SELECT PT_NAME,
       PT_NO,
       GEND_CD,
       AGE,
       IFNULL(TLNO,'NONE') AS TLNO
FROM PATIENT
WHERE AGE <= 12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME

TLNO가 널일땐 ‘NONE’으로

AGE를 내림차순으로 AGE 같을 땐 PT_NAME의 오름차순으로 정렬해서…

COUNT

전체 행 갯수: SELECT COUNT(*) FROM 테이블

칼럼 데이터 갯수 : SELECT COUNT(컬럼) FROM 테이블

max, min

-- 코드를 입력하세요
SELECT max(PRICE) AS MAX_PRICE
FROM PRODUCT

PRICE중 MAX값을 표현해라.

MAX_PRICE라는 이름으로.

PRODUCT 테이블에서

DATE_FORMAT

-- 코드를 입력하세요
SELECT DR_NAME,
       DR_ID, 
       MCDP_CD,
       DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD 
FROM DOCTOR
WHERE MCDP_CD = 'CS' OR 
      MCDP_CD = 'GS'
ORDER BY HIRE_YMD DESC, DR_NAME

DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') 날짜 포맷을 yyyy-mm-dd 형식으로 뽑기

DR_NAME DR_ID MCDP_CD HIRE_YMD
니모 DR20200012 CS 2020-03-01
뽀로로 DR20170123 GS 2017-03-01
DR20100039 GS 2010-07-01
자스민 DR20100032 GS 2010-03-01
패티 DR20090001 CS 2009-07-01
루피 DR20090029 CS 2009-03-01

댓글