Back-End 19

[프로그래머스 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

[React/Cloud Firestore] delete document using where clause (query문으로 조건에 부합하는 문서 delete하는 법)

공식문서를 보면 위와 같이 불친절하게 쿼리문을 사용하지 않고 문서의 ID를 이용해 삭제하는 코드를 소개한다. 하지만 문서의 ID를 사용하지 않고 쿼리문을 사용해 조건에 맞는 문서를 찾은 다음, 그 문서를 삭제하고 싶을 수도 있을 것이다. 그런 경우 아래의 코드를 사용하면 된다. const deleteExample = async () => { const q = query(citiesRef, where("capital", "==", true)); const data = await getDocs(q); if (data.docs.length !== 0) { await deleteDoc(data.docs[0].ref); } } 예시 코드이다. 원하는 조건에 맞추어 query를 짜주고 getDocs로 데이터를 받아..

Back-End/Firebase 2022.01.19
반응형