Postgres에서보기로 두 행 사이의 백분율 변화를 계산합니다.

luftikus143

200 개 이상의 국가에 대한 연간 값이있는 테이블이 있습니다. 그래픽 표현의 경우 1990 년과 2013 년의 두 특정 연도 사이의 백분율 변화를 얻고 싶습니다.

표는 다음과 같습니다.

  id_country       year       value
    886            2002      161.348
    886            2003      161.348
    886            2004      176.016
    886            2005      176.016
    886            2006      179.683
    886            2007      183.35
    886            2008      201.685
    886            2009      227.354
    886            2010      234.688
    886            2011      245.689
    886            2012      293.36
    886            2013      440.04
    620            1990      40.337
    620            1991      1056.096
    620            1992      1151.438
    620            1993      1389.793
    620            1994      1584.144
    620            1995      1631.815
    620            1996      1749.159
    620            1997      1796.83
    620            1998      1906.84
    620            1999      1664.818
    620            2000      1642.816
    620            2001      2016.85
    620            2002      1760.16
    620            2003      1873.837
    620            2004      1961.845
    620            2005      2310.21
    620            2006      2328.545
    620            2007      2361.548
    620            2008      3329.636
    620            2009      3069.279
    620            2010      3098.615
    620            2011      2823.59
    620            2012      3373.64
    620            2013      2948.268

나는 id_country그 차이를 계산 하는으로 VIEW를 생성하는 것이 가장 좋은 방법이라고 생각했습니다 . 그러나 나는 그 쿼리가 어떻게 생겼는지 전혀 모른다. 그것은 반드시 SELECT모든 국가, 다음 분할 year = 2013에 의해 year = 1990이들 국가의 각.

해당 테이블 (추가 열로 표시됨)에 여러 변수가 있으므로 id_source = 1또는 id_source = 2, 또는 id_sector = 1또는 같은 추가 열 값으로 필터링해야하므로 더 복잡해질 수 있습니다 id_sector = 2.

어떤 도움이라도 대단히 감사합니다!

Erwin Brandstetter

아마도 가장 빠른 한 가지 방법 :

CREATE VIEW pct_2013_1990 AS
SELECT id_country
     ,       (sum(value) FILTER (WHERE year = 2013) * 100)
     / NULLIF(sum(value) FILTER (WHERE year = 1990), 0) AS pct
FROM   tbl
WHERE  year IN (1990, 2013)
AND    id_source = 1 -- ??
GROUP  BY id_country
-- ORDER BY ???

이것은 1990 년의 모든 국가에 대해 0보다 큰 값을 가지고 있다고 가정합니다 . 그렇지 않으면 0으로 나눕니다. 나는 NULLIF예제에서 그것을 방어 합니다. 이 경우 결과는 NULL입니다.

pct는 1990 년 대비 2013 년 값의 백분율입니다. 백분율 변화 를 구하려면 여기 에서 100을 뺍니다. 정확히 필요한 것이 무엇인지 확실하지 않습니다.

round()분수를 줄이는 데 사용할 수 있습니다 .

집계 FILTER절은 Postgres 9.4에서 도입되었습니다.

이전 버전에서는 CASE표현식으로 대체 할 수 있습니다 .

대신 집합 반환 함수를 사용하고 모든 연도에 대해 작동하도록 연도를 매개 변수화 할 수 있습니다.

CREATE FUNCTION f_pct_calc(year1 integer, year2 integer)
  RETURNS TABLE(id_country int, pct numeric) AS
$func$ 
    SELECT t.id_country
         ,       (sum(t.value) FILTER (WHERE year = $2) * 100)
         / NULLIF(sum(t.value) FILTER (WHERE year = $1), 0) AS pct
    FROM   tbl t
    WHERE  t.year IN ($1, $2)
    AND    t.id_source = 1 -- ??
    GROUP  BY t.id_country
    -- ORDER BY ???
$func$ LANGUAGE sql STABLE;

요구:

SELECT * FROM f_pct_calc(1990, 2013);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Excel에서 두 합계의 백분율을 계산하려고합니다.

분류에서Dev

matplotlib에서 두 줄 사이의 백분율 변화를 어떻게 표시합니까?

분류에서Dev

R에서 두 개의 개별 테이블 값 사이의 백분율 변화를 계산하는 테이블을 만드는 방법은 무엇입니까?

분류에서Dev

R : 두 개의 다른 열에서 백분율 변화를 얻는 방법

분류에서Dev

동일한 행의 두 열 사이에 백분율 변경 적용

분류에서Dev

인접한 두 행 간의 백분율 차이를 고유하게 계산

분류에서Dev

두 개의 변수로 백분율 계산

분류에서Dev

Excel에서 두 시간 사이의 효율성을 백분율로 계산

분류에서Dev

팬더에서 행 사이의 조건부 백분율 변화를 계산하는 방법은 무엇입니까?

분류에서Dev

SQL에서 다른 열로 그룹화 된 두 열 사이의 백분율을 어떻게 반환합니까?

분류에서Dev

SQL-합계의 백분율을 찾고 빼서 두 개의 새 합계를 얻습니다.

분류에서Dev

행 수준에서 합계의 백분율 계산

분류에서Dev

niUiSlider 링크 및 두 슬라이더의 백분율 합계를 100으로 만듭니다.

분류에서Dev

각 행에 다른 두 개가 채워지는 5 개 셀 범위에 대한 백분율 변경 계산

분류에서Dev

쿼리를 사용하여 두 합계 값에서 백분율 찾기

분류에서Dev

이 두 시간 값에서 백분율 값을 어떻게 계산합니까?

분류에서Dev

다른 행의 값을 기준으로 백분율 계산

분류에서Dev

주어진 숫자를 주어진 두 숫자 사이의 백분율로 계산

분류에서Dev

VBA는 두 기준에 따라 행 사이의 행을 계산합니다.

분류에서Dev

두 테이블에 삽입 된 값 사이의 백분율 계산

분류에서Dev

Tidyverse를 사용하여 Total이 행에있을 때 백분율 열을 계산하는 For 루프 다시 작성

분류에서Dev

Excel은 백분율 기준의 합계를 얻습니다.

분류에서Dev

Pandas에서 그룹 내 열의 백분율 변화 계산

분류에서Dev

rowPercents를 사용하여 합계에 대한 백분율 계산

분류에서Dev

값이 두 숫자 사이에있는 행을 계산하고 다른 열로 그룹화합니다.

분류에서Dev

두 파일 크기 간의 비율을 백분율로 구합니다.

분류에서Dev

R에 행 단위 변환을 적용하여 각 행의 총 백분율이 100 %가되도록합니다.

분류에서Dev

행 간 가격의 백분율 변화 찾기

분류에서Dev

Gridview에서 소계 아래 행의 백분율을 계산하려면 어떻게합니까?

Related 관련 기사

  1. 1

    Excel에서 두 합계의 백분율을 계산하려고합니다.

  2. 2

    matplotlib에서 두 줄 사이의 백분율 변화를 어떻게 표시합니까?

  3. 3

    R에서 두 개의 개별 테이블 값 사이의 백분율 변화를 계산하는 테이블을 만드는 방법은 무엇입니까?

  4. 4

    R : 두 개의 다른 열에서 백분율 변화를 얻는 방법

  5. 5

    동일한 행의 두 열 사이에 백분율 변경 적용

  6. 6

    인접한 두 행 간의 백분율 차이를 고유하게 계산

  7. 7

    두 개의 변수로 백분율 계산

  8. 8

    Excel에서 두 시간 사이의 효율성을 백분율로 계산

  9. 9

    팬더에서 행 사이의 조건부 백분율 변화를 계산하는 방법은 무엇입니까?

  10. 10

    SQL에서 다른 열로 그룹화 된 두 열 사이의 백분율을 어떻게 반환합니까?

  11. 11

    SQL-합계의 백분율을 찾고 빼서 두 개의 새 합계를 얻습니다.

  12. 12

    행 수준에서 합계의 백분율 계산

  13. 13

    niUiSlider 링크 및 두 슬라이더의 백분율 합계를 100으로 만듭니다.

  14. 14

    각 행에 다른 두 개가 채워지는 5 개 셀 범위에 대한 백분율 변경 계산

  15. 15

    쿼리를 사용하여 두 합계 값에서 백분율 찾기

  16. 16

    이 두 시간 값에서 백분율 값을 어떻게 계산합니까?

  17. 17

    다른 행의 값을 기준으로 백분율 계산

  18. 18

    주어진 숫자를 주어진 두 숫자 사이의 백분율로 계산

  19. 19

    VBA는 두 기준에 따라 행 사이의 행을 계산합니다.

  20. 20

    두 테이블에 삽입 된 값 사이의 백분율 계산

  21. 21

    Tidyverse를 사용하여 Total이 행에있을 때 백분율 열을 계산하는 For 루프 다시 작성

  22. 22

    Excel은 백분율 기준의 합계를 얻습니다.

  23. 23

    Pandas에서 그룹 내 열의 백분율 변화 계산

  24. 24

    rowPercents를 사용하여 합계에 대한 백분율 계산

  25. 25

    값이 두 숫자 사이에있는 행을 계산하고 다른 열로 그룹화합니다.

  26. 26

    두 파일 크기 간의 비율을 백분율로 구합니다.

  27. 27

    R에 행 단위 변환을 적용하여 각 행의 총 백분율이 100 %가되도록합니다.

  28. 28

    행 간 가격의 백분율 변화 찾기

  29. 29

    Gridview에서 소계 아래 행의 백분율을 계산하려면 어떻게합니까?

뜨겁다태그

보관