예꾸
개발자국
예꾸
전체 방문자
오늘
어제
  • 분류 전체보기 (111)
    • CS (6)
      • 데이터베이스 (5)
      • 운영체제 (0)
      • Computer Architecture (1)
    • 끄적끄적 (4)
    • 이론 (29)
      • 알고리즘 (18)
      • 자료구조 (4)
      • WEB (2)
      • JS (2)
      • Git (2)
      • Python (1)
    • 면접준비 (3)
      • Vue (1)
      • Design Pattern (1)
      • Frontend (1)
    • 개발기술 (20)
      • Git PUSH 자동화 (3)
      • VUE (1)
      • Linux (2)
      • MERN Stack (2)
      • React기반 Gatsby로 블로그 개발하기 (6)
      • Typescript (0)
      • 감정일기장(React) (3)
      • CI CD (3)
    • 코드트리 (6)
      • 블로그 챌린지 (3)
      • 모의시험 (3)
    • 취업준비 (3)
      • 코딩테스트 후기 (3)
    • 프로그래머스 (8)
      • SQL (7)
      • 알고리즘 (1)
    • 백준 (31)
      • 그리디(탐욕법) (6)
      • 구현 (5)
      • 그래프탐색(dfs, bfs) (5)
      • 완전탐색 (5)
      • 문자열 (5)
      • 누적합 (2)
      • DP(다이나믹 프로그래밍) (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프로그래머스
  • JS
  • 백준 그리디
  • 백준 구현
  • 백준 문자열
  • 운영체제
  • gatsby
  • javascript
  • 백준 완전탐색
  • 나만의공부노트
  • 백준 그래프탐색
  • 코드트리
  • 자료구조
  • React
  • 컴퓨터 시스템의 구조
  • 알고리즘
  • 프로그래머스 SQL
  • 코딩테스트실력진단
  • 코딩테스트
  • 코드트리 추천

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
예꾸

개발자국

[프로그래머스 SQL] MySQL - GROUP BY 정답
프로그래머스/SQL

[프로그래머스 SQL] MySQL - GROUP BY 정답

2021. 5. 21. 14:52

GROUP BY 정리

이전 포스팅([데이터베이스]SELECT)에 GROUP BY에 대한 정리가 되어있습니다 ;)

MySQL변수는 입양시각 구하기(2) 문제를 위해 따로 정리했습니다

참고해주세요..!

 

2021.05.09 - [CS/데이터베이스] - [데이터베이스] SELECT

2021.05.21 - [CS/데이터베이스] - [데이터베이스] MySQL 변수

 

[데이터베이스] MySQL 변수

사용자 정의 변수 사용자가 직접 정의하는 변수로써, 정수, 10진수, 부동 소수점, 2진수 또는 이진 문자열, Null값과 같은 제한된 데이터 유형 세트에서 값을 지정할 수 있음 변수는 세션(Session)단

ssafy-story.tistory.com

 

[데이터베이스] SELECT

SELECT 하나 또는 그 이상의 테이블에서 데이터를 추출하는 SQL의 데이터조작언어 중 하나 데이터베이스 중 하나 또는 그 이상의 테이블에서 데이터를 추출하기 위한 명령어 DML(Data Manipulation Languag

ssafy-story.tistory.com

 

 

GROUP BY 답

-- 고양이와 개는 몇 마리 있을까
SELECT ANIMAL_TYPE, COUNT(*) FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE

-- 동명 동물 수 찾기
-- 동물 이름 중 두번이상 쓰인 이름 AND 해당 이름이 쓰인 횟수 조회
-- 이때 결과 이름없는 동물은 제외, 결과는 이름순
SELECT NAME, COUNT(*) AS COUNT FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) >= 2 ORDER BY NAME


-- 입양시각 구하기(1)
SELECT HOUR(DATETIME), COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) >= 9 AND HOUR(DATETIME) < 20 GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME)


-- 입양시각 구하기(2)
SET @hour := -1; -- 변수선언

SELECT (@hour := @hour + 1) as HOUR, 
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23

입양시각 구하기(2) 풀이

쉽다 생각하고 풀었는데 답이 안나와서 당황했던 문제입니다😂

처음 풀이는 이랬습니다 

#실패

SELECT HOUR(DATETIME), COUNT(*) FROM ANIMAL_OUTS 
WHERE HOUR(DATETIME) >= 0 AND HOUR(DATETIME) < 24
GROUP BY HOUR(DATETIME)
ORDER BY HOUR(DATETIME)

그런데 COUNT가 0인건 출력이 안되더라구요,,, COUNT()는 원하는 값이 없으면 null을 출력하기 때문이었습니다

다른 분들의 풀이를 찾다가 발견한 것이 mysql 변수였습니다..! 변수에 대한 내용은 따로 정리해서 포스팅 해놨습니다😊

위에 글을 참고해주세요~

 

#성공

SET @hour := -1; -- 변수선언

SELECT (@hour := @hour + 1) as HOUR, 
(SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @hour) as COUNT
FROM ANIMAL_OUTS
WHERE @hour < 23

처음에 hour를 -1로 선언해주고 HOUR은 hour에 +1해준 값, HOUR(DATETIME)과 hour이 같아지는 때에 count 값을 COUNT로 해주었습니다

헷갈리는게 WHERE이었는데 hour를 -1로 선언해 22까지 +1씩 증가 시켜서 0~23까지 생성되어 범위를 23미만으로 설정한 것이었습니다

 

그럼이만 정리를 마쳐보겠습니다!

    '프로그래머스/SQL' 카테고리의 다른 글
    • [프로그래머스 SQL] MYSQL - JOIN 정답
    • [프로그래머스 SQL] MySQL - IS NULL정답
    • [프로그래머스 SQL] MySQL - SUM, MAX, MIN 정답
    • [프로그래머스 SQL] MySQL - SELECT 정답
    예꾸
    예꾸
    비전공자 옒의 개발이야기💻

    티스토리툴바