Computer Science/Database

Computer Science/Database

[DB/MongoDB] BSON(Binary JSON)

BSON (Binary JSON) JSON과 유사한 문서를 이진 형식으로 직렬화하는 방법이다. JSON과 마찬가지로 다른 문서 및 배열 내에 문서 및 배열을 포함할 수 있다. MongoDB에서는 BSON 형태로 데이터를 저장한다. 3가지 특성 1. 경량 공간 오버헤드를 최소로 유지하는 것은 특히 네트워크를 통해 사용될 때 모든 데이터 표현 형식에 중요하다. 2. 순회 BSON은 쉽게 순회하도록 설계되었으며 MongoDB의 기본 데이터 표현으로서의 역할에서 중요한 특성이다. 3. 효율적 데이터를 BSON으로 인코딩하고 BSON에서 디코딩하는 것은 C 데이터 유형을 사용하기 때문에 대부분의 언어에서 매우 빠르게 수행할 수 있다. Ref. 1. MongoDB (공식 문서) / https://www.mongod..

Computer Science/Database

[SQL/MySQL] 그룹별 조건에 맞는 식당 목록 출력하기

🔗 [프로그래머스] 그룹별 조건에 맞는 식당 목록 출력하기 확실히 join쪽 문제가 어려운 것 같다... 문제 MEMBER_PROFILE와 REST_REVIEW 테이블에서 리뷰를 가장 많이 작성한 회원의 리뷰들을 조회하는 SQL문을 작성해주세요. 회원 이름, 리뷰 텍스트, 리뷰 작성일이 출력되도록 작성해주시고, 결과는 리뷰 작성일을 기준으로 오름차순, 리뷰 작성일이 같다면 리뷰 텍스트를 기준으로 오름차순 정렬해주세요. 풀이 1. 처음 코드 SELECT MEMBER_NAME, R.REVIEW_TEXT, DATE_FORMAT(R.REVIEW_DATE, '%Y-%m-%d') REVIEW_DATE FROM REST_REVIEW R JOIN (SELECT *, RANK() OVER (ORDER BY CNT DES..

Computer Science/Database

[SQL/MySQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기

🔗 [프로그래머스] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 문제 푸는 데에 많은 시간을 소요했다... 문제 CAR_RENTAL_COMPANY_CAR 테이블과 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블과 CAR_RENTAL_COMPANY_DISCOUNT_PLAN 테이블에서 자동차 종류가 '세단' 또는 'SUV' 인 자동차 중 2022년 11월 1일부터 2022년 11월 30일까지 대여 가능하고 30일간의 대여 금액이 50만원 이상 200만원 미만인 자동차에 대해서 자동차 ID, 자동차 종류, 대여 금액(컬럼명: FEE) 리스트를 출력하는 SQL문을 작성해주세요. 결과는 대여 금액을 기준으로 내림차순 정렬하고, 대여 금액이 같은 경우 자동차 종류를 기준으로 오름차순 정..

Computer Science/Database

[SQL/MySQL] 시간대별 통계 내기

단순하게 데이터 범위 내에서 시간대별 통계 내기 SELECT HOUR(DATETIME) HOUR, COUNT(ANIMAL_ID) COUNT FROM ANIMAL_OUTS GROUP BY HOUR ORDER BY HOUR; 모든 시간대별 통계내기 재귀적 쿼리(with recursive)와 left outer join을 사용한다. WITH RECURSIVE temp as ( (SELECT 0 HOUR) union (SELECT HOUR+1 FROM temp where HOUR < 23) ) SELECT temp.HOUR, IFNULL(A.COUNT, 0) COUNT FROM temp LEFT OUTER JOIN ( SELECT HOUR(DATETIME) HOUR, COUNT(*) COUNT FROM ANIM..

Computer Science/Database

[SQL/MySQL] Window 함수로 큰 값/작은 값 조회하기

Window 함수는 쿼리 행 집합에 대해 집계와 유사한 작업을 수행한다. 그러나 집계 함수는 쿼리 행을 단일 결과 행으로 그룹화하는 반면, window 함수는 쿼리 행에 대한 결과를 생성한다. 집계함수 모든 행에 대한 단일 글로벌 합계와 국가별 그룹화된 합계를 생성한다. mysql> SELECT SUM(profit) AS total_profit FROM sales; +--------------+ | total_profit | +--------------+ | 7535 | +--------------+ mysql> SELECT country, SUM(profit) AS country_profit FROM sales GROUP BY country ORDER BY country; +---------+-----..

Computer Science/Database

[MySQL] GROUP BY 주의사항

GROUP BY를 사용할 때 자꾸 하는 실수가 있다. 잊지 말자! GROUP BY를 사용할 때 SELECT에서는 GROUP BY에 사용된 컬럼 또는 집계 함수를 적용한 컬럼만 올 수 있다. Q. 그럼 Group by에 사용된 컬럼 또는 집계 함수를 적용한 컬럼 외의 다른 컬럼도 같이 조회하려면 어떻게 해야할까? A. 서브쿼리를 사용해보자. 예제 아래 쿼리는 상품의 카테고리별로 가장 비싼 상품의 가격을 보여준다. SELECT CATEGORY, MAX(PRICE) MAX_PRICE FROM FOOD_PRODUCT GROUP BY CATEGORY ORDER BY MAX_PRICE DESC; | 상품의 카테고리별로 가장 비싼 상품의 가격뿐만 아니라 상품 이름까지 출력하려면 어떻게 해야할까? 더보기 과거 잘못 쓴..

Computer Science/Database

[MySQL] MAX 함수

MAX 함수와 다른 컬럼들을 함께 조회하게 되면 엉뚱한 값이 조회된다. (내가 저질러버린 실수...) -- 틀린 예시 SELECT 컬럼1, MAX(컬럼2) FROM 테이블; 그래서 MAX 함수와 함께 다른 컬럼들을 조회할 때는 다른 방법으로 조회해야 한다. 1) 서브 쿼리 SELECT 컬럼1, 컬럼2 FROM 테이블명 WHERE 컬럼2 = (SELECT MAX(컬럼2) FROM 테이블명) 2) ORDER BY와 LIMIT 사용하기 SELECT 컬럼1, 컬럼2 FROM 테이블명 ORDER BY 컬럼2 DESC LIMIT 1 → 단, MAX 함수를 사용하면 MAX()에 해당되는 레코드를 모두 조회하지만 ORDER BY와 LIMIT을 사용하면 제한한 수만큼의 레코드를 조회한다. Ref. 1. 프로그래머스 게시..

Computer Science/Database

[MySQL] 가장 최근 날짜 조회하기

가장 최근 날짜를 조회하기 위해 쿼리를 짰었다. 나는 날짜 컬럼을 내림차순으로 정렬하고 처음 것을 조회했었다. SELECT {날짜 컬럼} FROM {테이블명} ORDER BY {날짜 컬럼} DESC LIMIT 1; 다른 사람들의 쿼리를 통해 MAX() 함수를 쓸 수 있다는 것을 알게 되었다. MAX() 함수를 사용하면 훨씬 간결하게 짤 수 있다. 가장 최근 날짜 조회 SELECT MAX({날짜 컬럼}) FROM {테이블명}; 가장 옛날 날짜 조회 SELECT MIN({날짜 컬럼}) FROM {테이블명}; Ref. 1. https://stackoverflow.com/questions/426731/min-max-vs-order-by-and-limit * 잘못된 부분에 대해 댓글 남겨주시면 감사하겠습니다! 😀

Computer Science/Database

[SQL/Oracle] NULL 조회하기

NULL은 비교 연산자를 사용할 수 없다. NULL을 조회하기 위해서는 IS NULL 또는 IS NOT NULL을 사용해야 한다. -- NULL 조회 SELECT COL1 FROM TABLE WHERE COL2 IS NULL; -- NULL 외 조회 SELECT COL1 FROM TABLE WHERE COL2 IS NOT NULL; Ref. 1. https://gent.tistory.com/281 2. https://baekh-93.tistory.com/83 * 잘못된 부분에 대해 댓글 남겨주시면 감사하겠습니다! 😀

Computer Science/Database

[SQL/MySQL] 함수

이 게시글은 얄팍한 코딩사전님의 '🔗 왕초보용! 갖고 노는 MySQL 데이터베이스 강좌'를 정리한 글입니다. 함수 숫자 관련 함수들 함수 설명 ROUND 반올림 CEIL 올림 FLOOR 내림 SELECT ROUND(0.5), CEIL(0.2), FLOOR(0.7); SELECT Price, ROUND(price), CEIL(price), FLOOR(price) FROM Products; 함수 설명 ABS 절대값 SELECT ABS(-2), ABS(1), ABS(2 - 5); 함수 설명 GREATEST {괄호 안에서} 가장 큰 값 LEAST {괄호 안에서} 가장 작은 값 SELECT GREATEST(1, 2, 100), LEAST(-1, 5, 10); 그룹 함수 - 조건에 따라 집계된 값을 가져온다. 함수..

com-l
'Computer Science/Database' 카테고리의 글 목록