찔끔찔끔씩😎

[프로그래머스] SQL 고득점 Kit - GROUP BY 본문

Algorithm/프로그래머스 -sql

[프로그래머스] SQL 고득점 Kit - GROUP BY

댕경 2022. 3. 4. 00:43
728x90

https://programmers.co.kr/learn/courses/30/parts/17044

 

프로그래머스

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

programmers.co.kr


고양이와 개는 몇 마리 있을까

SELECT ANIMAL_TYPE, COUNT(*) as count
FROM ANIMAL_INS 
GROUP BY ANIMAL_TYPE
ORDER BY 
CASE ANIMAL_TYPE
    WHEN 'Cat' THEN 1
    WHEN 'Dog' THEN 2
END;
🔎 CASE 문
  -  CASE 컬럼
     WHEN 조건1 THEN 값1
     WHEN 조건2 THEN 값2
     ELSE 값3
     END

 

사실 이 문제에서는 C,D만으로 정렬이 가능하기 때문에, ORDER BY 만 사용해도 되긴 된다.

SELECT ANIMAL_TYPE, COUNT(*) as count
FROM ANIMAL_INS 
GROUP BY ANIMAL_TYPE
ORDER BY ANIMAL_TYPE

동명 동물 수 찾기

SELECT NAME, COUNT(NAME)
FROM ANIMAL_INS
GROUP BY NAME
HAVING COUNT(NAME) > 1
ORDER BY NAME
🔎 HAVING절
- WHERE 절: 모든 테이블에 대해 조건 -> GROUP BY
- HAVING 절: GROUP BY 된 새로운 테이블에 조건

입양 시간 구하기(1)

SELECT HOUR(DATETIME) HOUR ,COUNT(DATETIME) COUNT
FROM ANIMAL_OUTS
GROUP BY HOUR(DATETIME)
HAVING HOUR >= 9 AND HOUR <= 19
ORDER BY HOUR(DATETIME)
🔎 HOUR
- HOUR(xx) : 날짜 데이터에서 시간만 추출하기 
- YEAR, MONTH, DAY, MINUTE, SECOND ...

입양 시간 구하기(2)

SET @HOUR_LIST = -1; 
SELECT 
    (@HOUR_LIST := @HOUR_LIST + 1) HOUR,
    (SELECT COUNT(*) 
     FROM ANIMAL_OUTS 
     WHERE HOUR(DATETIME) = @HOUR_LIST) COUNT 
FROM ANIMAL_OUTS 
WHERE @HOUR_LIST <23;
🔎 SET

- SET @ 변수명 := 초기값;
- 기업의 SQL 테스트에서는 거의 나오지 않았다고 한다. 납득하고 넘어가기~

 

Comments