데이터베이스/SQL

(SQL 프로그래머스) 고양이와 개는 몇마리 있을까/헤비유저가 소유한 장소

SK_MOUSE 2021. 8. 5. 14:24
반응형

- 고양이와 개는 몇마리 있을까(https://programmers.co.kr/learn/courses/30/lessons/59040)

전체테이블에서 "ANIMAL_TYPE"과 개수를 반환.

코드는 아래와 같다.

-- 코드를 입력하세요
SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count
FROM ANIMAL_INS
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE

SELECT문에서 각각의 ANIMAL_TYPE 에 대해서 대응해서 count값이 매칭된다.

 

GROUP BY를 사용해서 ANIMAl_TYPE끼리 묶어서 출력하는게 핵심이다.

 

동물의 이름 순서대로 출력하기 위해서는 ORDER BY를 사용한다.

 


-헤비 유저가 소유한 장소(https://programmers.co.kr/learn/courses/30/lessons/77487)

HOST_ID 끼리 그루핑 해서 카운트값이 2이상인것들만 출력

 

SELECT *
FROM PLACES
WHERE HOST_ID IN (
        SELECT HOST_ID
        FROM PLACES
        GROUP BY HOST_ID
        HAVING COUNT(HOST_ID)>1
    )

SELECT 는 우선 조건에 만족하는 컬럼 전체를 그대로 출력한다.

WHERE 에서 IN은 조건에 포함되는 경우를 모두 가져온다.

즉, 일치하길 원하는 조건을 뒤에 적는다.

SELECT #####
WHERE HOST_ID IN (760849, 30900122)

인 셈이다.

 

그럼 상세하게 WHERE절의 서브쿼리에 대해서 살펴보자. 

 

GROUP BY 를 사용해서 묶고, HAVING(조건) => COUNT(HOST_ID)한 값이 1보다 큰 컬럼만 고른다.

반응형

'데이터베이스 > SQL' 카테고리의 다른 글

Mybatis Long 타입 매핑 오류  (0) 2023.05.09