ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PostgreSQL 스터디 #4
    Project/PostgreSQL 2022. 11. 22. 23:02

    Group By

    그룹을 만들어서 함수도 쓸 수 있게 할 수 있는 방법.

    예제에서는 항목의 개수를 리턴 받을 수 있는 COUNT(*) 함수를 사용 한다.

    SELECT country_of_birth, COUNT(*) FROM person GROUP BY country_of_birth ORDER BY country_of_birth;

    아래 처럼 데이터 중 해당하는 국가의 개수를 표현한다.

    Group By Having

    그룹에서 논리 연산자로 필터를 걸 수 있는 기능.

    SELECT country_of_birth, COUNT(*) FROM person GROUP BY country_of_birth HAVING COUNT(*) > 30 ORDER BY country_of_birth;

    아래와 같이 데이터의 개수가 30개 초과인 항목만 표시한다.

     

    Min, Max, Avg

    아래의 함수들로 최소, 최대, 평균 값을 구할 수 있다.

    - 최소: MIN(price)

    - 최대: MAX(price)

    - 평균: AVG(price::numeric)

    Group by를 사용하면 해당 그룹 값에 대해 목록을 볼 수 있다.

    SELECT make, MIN(price) FROM car GROUP BY make;

    SELECT make, MAX(price) FROM car GROUP BY make;

    SELECT make, AVG(price::numeric) FROM car GROUP BY make;

    Issue #1

    Money type 입력

    아래 테이블을 생성해서 예제를 진행하는 도중, "Money" type을 지정하게 되었다.

    생성 된 sql파일을 열어서 항목을 수정하는 도중 price에 NUMERIC type으로 설정하라는 설명이 있었다.

    하지만 에러가 발생했고, 그 이유는 price 데이터들 앞에 붙은 "$" 때문이였다.

    Type에 대한 docs를 찾아보다가 money관련 type이 있다는 것을 확인했다.

    아래와 같이 price의 type을 "MONEY"로 수정했다.

    정상적으로 table이 생성 되었다.

    Issue #2

    Money type AVG 사용

    Money type에 AVG()를 그대로 사용하면 아래와 같이 에러가 나온다.

    이는 아래와 같이 numeric으로 형변환을 통해서 값을 확인 할 수 있다.

     

    'Project > PostgreSQL' 카테고리의 다른 글

    PostgreSQL 스터디 #3  (0) 2022.11.19
    PostgreSQL 스터디 #2  (0) 2022.11.19
    PostgreSQL 스터디 #1  (0) 2022.11.18
Logout