1. 고양이와 개는 몇 마리 있을까
https://school.programmers.co.kr/learn/courses/30/lessons/59040
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요.
SELECT ANIMAL_TYPE, COUNT(ANIMAL_ID)
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE;
- GROUP BY를 통해 카테고리 별로 분류 후 COUNT하여 각 카테고리 별로 몇 마리인지 출력했다.
2. 흉부외과 또는 일반외과 의사 목록 출력하기
https://school.programmers.co.kr/learn/courses/30/lessons/132203
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
DOCTOR 테이블에서 진료과가 흉부외과(CS)이거나 일반외과(GS)인 의사의 이름, 의사ID, 진료과, 고용일자를 조회하는 SQL문을 작성해주세요. 이때 결과는 고용일자를 기준으로 내림차순 정렬하고, 고용일자가 같다면 이름을 기준으로 오름차순 정렬해주세요.
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 ASC
- DATE 형식임에도 DATE_FORMAT으로 형식을 지정해주지 않으면 TIME이 지정되어 있지 않음에도 '연-월-일- 00:00:00' 으로 출력이 됐다. 그래서 DATE_FORMAT 함수를 사용하여 형식을 맞춰주었다.
- ORDER BY에서 문제에 맞게 순서대로 정렬될 수 있게 정렬 조건을 나타냈다.
3. 카테고리 별 상품 개수 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/131529
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제
PRODUCT 테이블에서 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요.
SELECT LEFT(PRODUCT_CODE, 2) AS CATEGORY, COUNT(PRODUCT_ID) AS PRODUCTS
FROM PRODUCT
GROUP BY CATEGORY
ORDER BY CATEGORY;
- 현재 상품 카테고리 코드는 A1000011, C3000002 등의 형식으로 나타나서 'A1', 'C3' 으로 앞 2자리를 잘라서 카테고리로 치환시켜야 했다. 이때 사용한 방식이 LEFT 함수를 사용한 것이었다. MySQL에서 문자열을 슬라이싱 하는 방법에는 3가지 함수(LEFT, SUBSTRING, RIGHT)가 있다.
- LEFT(컬럼명, number), RIGHT(컬럼명, NUMBER) 함수는 해당 컬럼의 문자열을 왼쪽에서/ 오른쪽에서 number만큼 자른다.
- SUBSTRING(컬럼명, start, length) 함수는 중간에 있는 문자열만 자를 수도 있다. start 지점에서 length만큼 문자열을 슬라이싱 해준다.