Back-End/SQL 8

[프로그래머스 SQL 고득점 Kit] 오랜 기간 보호한 동물(2)

SELECT animal_id, name FROM ANIMAL_OUTS as O JOIN ANIMAL_INS as I USING (animal_id, animal_type, name) ORDER BY O.datetime - I.datetime desc LIMIT 2 DATETIME 끼리는 기본적인 연산이 가능하다는 것을 알게 되었다. 그리고 그를 이용한 값을 ORDER BY에서 이용할수도 있다는 것도 알게되었다. JOIN ~ USING을 사용하면 조금더 깔끔하게 작성할 수 있다.

Back-End/SQL 2022.03.04

[프로그래머스 SQL 고득점 Kit] 입양 시각 구하기(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 ORDER BY HOUR asc 쿼리문에서 로컬 변수를 활용하는 문제다. SET을 사용하면 변수를 정의할 수 있다. @가 붙은 것은 변수라고 생각하면 된다. 즉, hour는 초기값이 -1인 변수이다. :=은 비교 연산자 =과 혼동을 피하기 위한 대입 연산자이다. SELECT (@hour := @hour + 1)은 @hour의 값에 1씩 증가시키며 SELECT 문 전체를 실행하게 된다. 이때, 처음 hour..

Back-End/SQL 2022.03.04

[Oracel / SQL] JOIN 예시와 함께 톺아보기 (Inner, Outer, Left, Right, Natural JOIN)

1. INNER JOIN (내부 조인, 동등 조인) SELECT {컬럼 명} FROM {테이블 A} (INNER) JOIN {테이블 B} ON A.{공통 속성} = B.{공통 속성}; INNER는 생략해도 된다. 가장 일반적인 JOIN(교집합)이며 조건이 일치하는 값이 두 테이블에 모두 존재할 때 출력한다. 아래와 같이 카티션 곱을 활용해 작성해도 된다. SELECT {컬럼 명} FROM {테이블 A}, {테이블 B} WHERE A.{공통 속성} = B.{공통 속성}; 하지만 카티션 곱을 이용하면 메모리 사용량이 커지므로 JOIN을 사용하는 것이 좋다. 2. OUTER JOIN (외부 조인) LEFT OUTER JOIN - A 테이블과 중복되는 B 값과 B 와 중복되지 않은 A 의 모든 값을 출력 RIG..

Back-End/SQL 2022.03.03
반응형