프그스 SQL - 고득점 kit - Group By 모음 (중요)

RostoryT·2022년 7월 15일
0

sql

목록 보기
3/5
post-thumbnail

내가 유형별로 풀어서 group by쓰면 된다는걸 아니까 쉬운거같다. 나중에 고득점 kit에서 말고 그냥 풀어보자


1. 고양이와 개는 몇 마리 있을까 - level 2

SELECT animal_type, count(*)
FROM animal_ins
Group BY animal_type
ORDER BY animal_type asc


2. 동명 동물 수 찾기 - level 2


  • 오답 코드 (실행결과는 같던데...)
    • count()에 as 안해주면 틀림
    • count()에 * 가 아니라 name이 들어가야함 (중요)
SELECT name, count(*) as count
FROM animal_ins
Group BY name
HAVING 2 <= count(*)
ORDER BY name asc
  • 정답 코드
SELECT name, count(name) as 'count'
FROM animal_ins
Group BY name
HAVING 2 <= count(name)
ORDER BY name asc


3. 입양 시각 구하기(1) - level 2

SELECT HOUR(datetime) as 'HOUR', COUNT(datetime) as 'COUNT'
FROM animal_outs
WHERE HOUR(datetime) BETWEEN '09:00:00' AND '19:59:00'
GROUP BY HOUR(datetime)
ORDER BY HOUR(datetime)


4. 입양 시각 구하기(2) - level 4

  • 갑자기 난이도 확 올라감
  • 변수 사용해야 함
    • 변수 선언 및 사용 방법
SET @변수명 = 할당할 값;       -- '=' 기호를 사용하여 할당한다..!

-- 나중에 쓸 때
@변수명 := @변수명+2 as 컬럼명  -- ':=' 기호를 사용해야 한다 주의!
  • 적용 예
SET @HOUR = -1;                        -- @HOUR라는 변수 선언(시간은 0부터이므로)

SELECT (@HOUR := @HOUR+1) as 'HOUR'
FROM animal_outs
WHERE @HOUR <= 22;

  • 서브쿼리 사용해야 함

    • Select : 스칼라 서브쿼리
    • From : 인라인뷰
    • Where : 서브쿼리
  • 그래서 스칼라 서브쿼리 안에서 @HOUR 만들어준게 HOUR(datetime)과 같은 것만 Count()수행

  • 참고 링크 : https://jaaamj.tistory.com/155

  • 정답 쿼리

SET @HOUR = -1;                        -- @HOUR라는 변수 선언(시간은 0부터이므로)

SELECT (@HOUR := @HOUR+1) as 'HOUR',
        (SELECT COUNT(HOUR(datetime)) 
         FROM animal_outs
         WHERE HOUR(datetime) = @HOUR) as 'COUNT'
FROM animal_outs
WHERE @HOUR <= 22;

profile
Do My Best

0개의 댓글