행궁동 데이터 엔지니어

반응형

프로그래머스 SQL 문제 중 GROUP BY 카테고리에 속한 1문제를 풀어 봤습니다.

이번에는 0~23시의 모든 HOUR를 출력하기 위해 [SET @변수명 = '값';]을 사용해서 풀어봤습니다.

확실히 UNION을 사용해 SELECT 쿼리를 결합할 때보다 쿼리문이 짧아졌습니다.

 

주요 사용 쿼리/함수 : [SET @변수명 = '값';] [@변수명 := '값';], GROUP BY, HOUR(시간)

 

변수 선언과 관련한 짤막한 이야기

  • SET @변수명 = '값';
  • SET @변수명 := '값'; 
  • 위의 2가지 방법으로 MySQL에서 변수를 선언할 수 있습니다.
  • SET 명령어를 사용한 변수 선언 시 '=' 와 ':=' 2가지 방법은 차이가 없습니다.
  • 하지만 SET을 제외한 다른 쿼리문(SELECT 등)은 '=' 를 비교연산자(comparison operator)로 인식하기 때문에, SET이 아닌 쿼리문에서는 반드시 대입 연산자(assignment operator) ':='을 사용해 야 합니다.
  • 결론적으로 보면 '='와 ':=' 차이는 아래와 같습니다.
  • '=' : MySQL에서 대입연산자, 비교연산자 2가지로 사용 됨 (SET 명령어에서만 대입 연산자로 인식)
  • ':=' : MySQL에서 대입 연산자로만 사용 됨 
  • 변수 사용 시 명시적으로 대입 연산자의 의미만을 갖는 ':=' 의 사용을 권장합니다. 

 

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

  • SET으로 HOUR_LIST라는 변수를 선언하고 +1 씩 하며 0~23시 까지 모든 시간에 대한 COUNT를 출력
  • UNION을 이용한 문제 풀이도 아래에 남겨두었습니다.

https://programmers.co.kr/learn/courses/30/lessons/59413

 

코딩테스트 연습 - 입양 시각 구하기(2) | 프로그래머스

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FA

programmers.co.kr

혹시 UNION을 사용한 풀이가 궁금하신 분은 아래 링크에서 확인하시면 됩니다.

(쿼리문은 위에 통합으로 올라가 있습니다.)

https://mentha2.tistory.com/97

 

[프로그래머스, SQL 문제] 입양 시각 구하기(2) (GROUP BY) with MySQL

프로그래머스 SQL 문제 중 GROUP BY 카테고리에 속한 1문제를 풀어 봤습니다. SQL문제 중 LEVEL 4로 난이도가 높았습니다. UNION을 사용하니 확실히 쿼리가 길어지네요. 다음번에는 변수를 사용해서 풀어 보겠습니..

mentha2.tistory.com

1. TCPschool, 대입 연산자 설명, http://tcpschool.com/mysql/mysql_operator_assignment
2. 삼쾌한 IT 강의, MySQL 변수 종류 및 사용법, https://three-pleasure.tistory.com/256
반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band