DB/postgres

postgresql - dvdrental 실습(1) (Roll-up)

@예민한 방구석여포 힘히힘 2021. 2. 24. 09:59
반응형

postgresql dvdrental 데이터로 실습을 해보기로...!

 

 

사실 dvdrental.tar를 오라클로 하고 싶어서 방법 찾다 포기하고, 그냥 postgres로....

oracle과 postgres의 쿼리구문을 보니 거의 동일한것 같다!

 

 

 

dbeaver에 연결해서 사용!

 

 

DB가 무겁다? DBeaver 를 사용해보자

이것저것 DB와 spotfire를 연결해보는 작업...과 그냥 DB 공부... 겸 이것 저것 설치한 친구들 oracle... mssql... postgresql... 쿼리공부를 하라고 하셨는데... cmd에 sqlplus 치고 sql쿼리를 작성하기에 나는....

coo-coo2021.tistory.com

 

비버를 모른다면 위클릭!

 

 

DVD-rental database의

데이터 구조를 먼저 보니, 

 

DVD rental database

이렇게 생김!!

 

이 데이터로 무엇을 찝어낼수 있을까...

상상을 해본다면?

 

 

  • actor – stores actors data including first name and last name.
  • film – stores film data such as title, release year, length, rating, etc.
  • film_actor – stores the relationships between films and actors.
  • category – stores film’s categories data.
  • film_category- stores the relationships between films and categories.
  • store – contains the store data including manager staff and address.
  • inventory – stores inventory data.
  • rental – stores rental data.
  • payment – stores customer’s payments.
  • staff – stores staff data.
  • customer – stores customer data.
  • address – stores address data for staff and customers
  • city – stores city names.
  • country – stores country names.

 

 

- 최근 빌린 것들 중 제일 높은 비중을 차지하는 장르를 볼수 있을 것! -> 시기별 유행을 알 수 있지 않을까?

- 많이 찾아서 빌리는 flim과 actor의 연결관계를 발견할 수 있을까? -> 탑배우나... 뭐... 너도나도 좋아하는 배우..찾기....

 

 

흥미로운 주제들이 뭐가 더있을까 🤔 ...

 

 

 

*패스트 캠퍼스 SQL/DB 올인원을 수강중!

 

 

간단한 실습문들을 정리 해 두기로!

 

 

 

-- 1.Rental 테이블을 이용하여 연, 연월, 연월일 전체 각각의 기준으로 RENTAL_ID 기준 렌탈이 일어난 횟수를 출력하라.

 

--연
--연월
--연월일
--전체
--> Rollup을 사용하자!! 간편하게 조합을 출력가능하다~

 

 

 

 

 

--연별

SELECT to_char(rental_date, 'yyyy') ,
		count(*)   
       FROM rental  
GROUP BY to_char(rental_date, 'yyyy');

 

SELECT      EXTRACT(YEAR FROM rental_date) 연도   
            ,count(*) 렌탈횟수 FROM rental  
GROUP BY EXTRACT(YEAR FROM rental_date);

 

 

 

 

--월별
SELECT
to_char(rental_date, 'yyyymm') ,
count(*)
  FROM
rental
GROUP BY to_char(rental_Date, 'yyyymm')
ORDER BY to_char(rental_date, 'yyyymm');

SELECT to_char(rental_date, 'yyyymm')
       , count(*)   
    FROM rental 
 GROUP BY to_char(rental_Date, 'yyyymm') 
ORDER BY to_char(rental_date, 'yyyymm');



--일별

SELECT to_char(rental_date, 'yyyymmdd') 
       , count(*)   
     FROM rental 
   GROUP BY to_char(rental_Date, 'yyyymmdd') 
ORDER BY to_char(rental_date, 'yyyymmdd');

 

--전체

SELECT count(*) FROM rental;

 

 

 


저 조합들을 한번에 보여줄 수 있는, 

ROLL -UP 을 이용!!!

 

ex

Rollup(1, 2)

=group by 별 합계 + 1번 기준 합계 + 전체 합계

SELECT to_char(rental_date,'yyyy') 연도
      ,to_char(rental_date,'mm') 월   
      ,to_char(rental_date,'dd') 일   
      ,count(*) 렌탈횟수 
   FROM rental 
   GROUP BY ROLLUP (    
   to_char(rental_date,'yyyy'), to_char(rental_date,'mm'), to_char(rental_date,'dd'));

 

 

SELECT EXTRACT(YEAR FROM rental_date) 연
     ,EXTRACT(MONTH FROM rental_date) 월
     ,EXTRACT(DAY FROM rental_date) 일
     ,count(*) 렌탈횟수 FROM rental 
  GROUP BY ROLLUP (     
                    EXTRACT(YEAR FROM rental_date)
                   ,EXTRACT(MONTH FROM rental_date)
                   ,EXTRACT(DAY FROM rental_date)
                   )
ORDER BY 연, 월, 일 asc;

 

 

 

-> 두 결과는 동일하다!

'DB > postgres' 카테고리의 다른 글

postgresql - dvdrental 실습(6)  (0) 2021.03.11
postgresql - dvdrental 실습(5)  (0) 2021.03.10
postgresql - dvdrental 실습(4)  (0) 2021.03.09
postgresql - dvdrental 실습(3)  (0) 2021.02.25
postgresql - dvdrental 실습(2)  (0) 2021.02.24
postgresql - dvdrental 실습(1) (Roll-up)  (0) 2021.02.24
1 ··· 4 5 6 7 8