복붙노트

[SQL] PostgreSQL을 가진 피벗 테이블 만들기

SQL

PostgreSQL을 가진 피벗 테이블 만들기

포스트 그레스 리스팅라고 내가 테이블이 있다고 가정하는 다음과 같다 :

id    neighborhood    bedrooms    price
1     downtown        0           256888
2     downtown        1           334000
3     riverview       1           505000
etc.

어떻게 크로스 탭 쿼리를 작성하려면 어떻게해야합니까 쇼가 행과 열 및 지역 등의 침실 당 평균 가격?

쿼리의 출력은 다음과 같이 (숫자 열이 침실이다, 만들어집니다)을 보일 것입니다 :

            0       1       2       3
riverton    250000  300000  350000  -
downtown    189000  325000  -       450000

해결법

  1. ==============================

    1.먼저 계산 (집계 함수의 평균과 평균) :

    먼저 계산 (집계 함수의 평균과 평균) :

    SELECT neighborhood, bedrooms, avg(price)
    FROM   listings
    GROUP  BY 1,2
    ORDER  BY 1,2
    

    이 관련 질문에 대해 훌륭한 세부 사항의 지침에 따라 다음 크로스 탭 () 함수에 결과를 먹이 :

  2. ==============================

    2.포스트 그레스에서 빌드 피벗 테이블에 가장 좋은 방법은 케이스 문이다.

    포스트 그레스에서 빌드 피벗 테이블에 가장 좋은 방법은 케이스 문이다.

    select neighborhood,
    round(avg((case when bedroom = 0 then price else 0 end)),2) as "0",
    round(avg((case when bedroom = 1 then price else 0 end)),2) as "1",
    round(avg((case when bedroom = 2 then price else 0 end)),2) as "2",
    round(avg((case when bedroom = 3 then price else 0 end)),2) as "3",
    from listings
    group by neighborhood;
    

    이것은 내 출력했다

    NEIGHBORHOOD                  0          1          2          3
    -------------------- ---------- ---------- ---------- ----------
    downtown                      0     373.38     328.25     524.63
    riverview                     0     256.83          0       1341
    north                         0     199.15     507.85     986.31
    
  3. from https://stackoverflow.com/questions/20618323/create-a-pivot-table-with-postgresql by cc-by-sa and MIT license