오랑우탄의 반란

[프로그래머스] 동명 동물 수 찾기 (MySQL) WHERE(*), REGEXP 본문

SQL/프로그래머스

[프로그래머스] 동명 동물 수 찾기 (MySQL) WHERE(*), REGEXP

5&2 2024. 7. 3. 19:46
반응형

 

오늘도 오랑이는 문제를 풉니다.

 

동명 동물 수 찾기

 

풀이 과정

  • 예전에 풀었던 문제를 다시 살펴봤습니다. 
  • 기존 쿼리와 새로 작성한 쿼리를 비교해보면 having 으로 훨씬 간편하게 푼 걸 볼 수 있습니다. 
  • 다만 두번째 풀이에서 처음에 COUNT(*) 로 해서 오답이 나왔는데, 문제에서 NULL 값은 제외하라는 조건을 유의해서 COUNT(NAME) 으로 변경해야 정답이 나옵니다. 
COUNT(칼럼) 은 NULL 값 제외하고 집계됨 
COUNT(*) 은 NULL 값의 행도 모두 집계됨 

 

최종 코드

# AFTER
SELECT NAME, COUNT(NAME) AS COUNT
FROM ANIMAL_INS
GROUP BY 1
HAVING COUNT(NAME) >=2
ORDER BY 1

# BEFORE
SELECT NAME, COUNT
FROM (
    SELECT NAME, COUNT(1) AS COUNT
    FROM ANIMAL_INS
    WHERE NAME IS NOT NULL AND NAME != ''
    GROUP BY NAME
) a
WHERE COUNT >= 2
ORDER BY NAME

 

첫 풀이보다 훨씬 간단한 풀이가 나왔지요?

(정말 복잡하게 풀었었네요..)

 

 

조건 함수 REGEXP '조건1|조건2'

'~ 중 중 하나 이상 포함된' 조건에 대해 아래 함수 사용 (REGEXP '옵션1|옵션2|옵션3')
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'

 

 

 


오랑우탄이 영어를 하고 오랑이가 쿼리마스터가 되는 그날까지~

 

 

 

 

프로그래머스

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

programmers.co.kr

 

반응형