본문 바로가기
TIL

[231213] MySQL 공부

by 진진리 2023. 12. 13.
728x90
동명 동물 수 찾기

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

 

프로그래머스

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

programmers.co.kr

 

동물의 중복되는 이름과 그 개수를찾는 문제이다.

중복되는 이름의 개수를 어떻게 세면 좋을지 몰라 처음에 어렵게 느껴졌다.

Order by로 이름으로 그룹화해서 각 그룸 내에서 count를 이용해줌으로써 해결할 수 있다.

 

코드

SELECT 
    NAME, 
    COUNT(NAME) AS COUNT
FROM 
    ANIMAL_INS
GROUP BY 
    NAME
HAVING 
    COUNT(NAME) > 1
ORDER BY 
    NAME

 

 

NULL 처리하기

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

 

프로그래머스

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

programmers.co.kr

 

데이터 필드가 null인 경우 다른 값을 넣어줘야 하는 문제이다.

sql 문법에 대해 잘 알지 못해서 검색하여 ISNULL을 사용할 수 있다는 것을 알게 되었다.

 

SELECT 
    ANIMAL_TYPE, 
    IFNULL(NAME, 'No name'), 
    SEX_UPON_INTAKE
FROM 
    ANIMAL_INS

 

그런데 CASE문과 COALESCE도 NULL 값을 다루기 위해 사용할 수 있다는 것을 알게 되었다.

  • CASE문: 특정 경우에 따라 다른 결과를 반환하고자 하는 경우
  • IFNULL: 두 개의 파라미터를 사용
  • COALESCE: 여러 개의 파라미터를 사용 가능
    • 표준 SQL 함수이므로 다양한 RDBS에서 사용이 가능하다!
SELECT 
    ANIMAL_TYPE, 
    COALESCE (NAME, 'No name'), 
    SEX_UPON_INTAKE
FROM 
    ANIMAL_INS

 

 

DATETIME에서 DATE로 형 변환

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

 

프로그래머스

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

programmers.co.kr

 

날짜와 시간이 있는 DATETIME에서 DATE로 형 변환하여 출력하는 문제이다.

SELECT 
    ANIMAL_ID, 
    NAME, 
    LEFT(DATETIME, 10)
FROM 
    ANIMAL_INS
ORDER BY 
    ANIMAL_ID

 

나는 위와 같이 LEFT를 이용하여 풀었는데 이 경우에 사용할 수 있는 DATE_FORMAT 함수가 있다.

SELECT 
    ANIMAL_ID, 
    NAME, 
    DATE_FORMAT(DATETIME, '%Y-%m-%d')
FROM 
    ANIMAL_INS
ORDER BY 
    ANIMAL_ID

'TIL' 카테고리의 다른 글

[231219] QueryDSL, JPQL  (0) 2023.12.19
[231218] 이진트리, 힙  (0) 2023.12.18
[231211] Spring 심화 개인 과제 피드백  (0) 2023.12.11
[231207] 심화 주차 조별 과제  (1) 2023.12.07
[231206] 프로그래머스 피로도 (Java)  (0) 2023.12.06