Postgres의 2 개 테이블에 합계가있는 재귀 쿼리

라파엘 D 포르 틸라

2 개의 테이블이 있고 페이지 매김 (제한 및 오프셋)을 사용하여 필터를 만들어야합니다.

  1. res_partner (id, name, parent_id) (25 만 행)
  2. account_invoice (id, amount_untaxed, partner_id, created_date) (700k row)

한 파트너는 많은 자녀와 많은 계정 송장을 가질 수 있습니다.

일정 기간 동안 모든 고객과 그와 그 자녀와 관련된 총 송장 (과세되지 않은 총계)을 가져와야합니다. 예:

res_partner

id ---   name ---   parent_id

1  ---    Jon 

2 ---      Snow ----   1

3  ---    Sam    -----   2

account_invoice

id     ---  amount_untaxed --- partner_id --- created_date

1 ------------------ 5.00 ---------1--------------'2015-09-29 21:37:39.427189'

2 ------------------ 7.00 ---------2--------------'2015-09-29 21:37:39.427189'

3 ------------------ 3.00 ---------3--------------'2015-09-29 21:37:39.427189'

4 ------------------ 9.00 ---------1--------------'2015-09-29 21:37:39.427189'

나는 희망한다 :

res_partner --- amount

1 -----------------24

2 -----------------10

3 -----------------3
McNets

재귀 저장 프로 시저를 사용하여 각 레코드의 값을 계산할 수 있습니다.

CREATE OR REPLACE FUNCTION fnTree(pid int)
RETURNS numeric 
AS $$
DECLARE total numeric;
BEGIN
      WITH RECURSIVE tree(id, parent_id) AS 
      (
          SELECT id, parent_id 
          FROM   res_partner 
          WHERE  id = pid
         UNION ALL
          SELECT rp.id, rp.parent_id
          FROM   res_partner rp 
          JOIN   tree 
          ON     rp.parent_id = tree.id
      )
      SELECT sum(amount_untaxed) into total
      FROM   account_invoice ai
      WHERE  partner_id in (SELECT id FROM tree);
      RETURN total;
END;
$$ 
LANGUAGE plpgsql;
select id, fnTree(id)
from   res_partner;
아이디 | fntree- 
: | ----- : 
 1 | 24.00 
 2 | 10.00 
 3 | 3.00

여기 dbfiddle

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL 쿼리 : 2 개의 테이블에 존재하지 않는 경우 삽입

분류에서Dev

Sequelize : 2 개 이상의 테이블 관계에 대한 OR 쿼리

분류에서Dev

하나의 테이블 차이가있는 2 개의 쿼리에 대한 UNION

분류에서Dev

이 쿼리가 가능합니까? 2 개의 테이블에서 선택

분류에서Dev

차이 테이블에서 2 개의 쿼리를 결합하는 방법

분류에서Dev

2 개 테이블의 현재 MySQL 쿼리 최적화

분류에서Dev

2 개의 테이블이있는 MySQL 내부 조인 쿼리

분류에서Dev

내부 조인이있는 2 개 테이블의 mysql 쿼리

분류에서Dev

2 개의 테이블에서 데이터 가져 오기 및 쿼리 작성

분류에서Dev

다 대다 관계가있는 두 테이블에 대한 CTE 재귀 쿼리

분류에서Dev

서로 다른 테이블에서 2 개의 SQL 쿼리 결합

분류에서Dev

개수가있는 TSQL 재귀 쿼리

분류에서Dev

테이블을 재사용하는 3 개의 테이블에 대한 SQL 쿼리

분류에서Dev

투표에 따라 2 개의 테이블을 조인하는 MySQL 쿼리

분류에서Dev

병렬 테이블에 2 개의 mysql 쿼리를 표시하는 방법

분류에서Dev

카테고리 트리를 형성하는 2 개의 테이블에 대한 SQL 쿼리

분류에서Dev

개수 및 그룹 기준이있는 동일한 테이블에 대한 2 개의 다른 쿼리

분류에서Dev

테이블 1에서 2 개의 값을 가져오고 테이블 2에서 가능한 모든 옵션을 결합하는 SQL 쿼리

분류에서Dev

두 개의 다른 테이블에서 합계 쿼리

분류에서Dev

3 개의 MySQL 테이블을 1 개의 쿼리에 결합

분류에서Dev

3 개의 MySQL 테이블을 1 개의 쿼리에 결합

분류에서Dev

3 개의 MySQL 테이블을 1 개의 쿼리에 결합

분류에서Dev

2 개의 열에 최대 값이있는 테이블에서 레코드를 선택하는 LINQ 쿼리

분류에서Dev

2 개의 FK가있는 테이블을 하나의 테이블에 결합

분류에서Dev

PHP MySQL의 쿼리 2 개 데이터 테이블과 에코 하나 개의 JSON 배열로 결합?

분류에서Dev

트리에서 값의 합계 계산 (재귀 쿼리)

분류에서Dev

2 개의 테이블에 대해 1 개의 쿼리로 사용자의 메시지 계산

분류에서Dev

2 개의 다른 테이블에서 2 개의 쿼리를 조인하는 방법

분류에서Dev

2 개의 쿼리가있는 URL에 대한 재 작성 규칙

Related 관련 기사

  1. 1

    SQL 쿼리 : 2 개의 테이블에 존재하지 않는 경우 삽입

  2. 2

    Sequelize : 2 개 이상의 테이블 관계에 대한 OR 쿼리

  3. 3

    하나의 테이블 차이가있는 2 개의 쿼리에 대한 UNION

  4. 4

    이 쿼리가 가능합니까? 2 개의 테이블에서 선택

  5. 5

    차이 테이블에서 2 개의 쿼리를 결합하는 방법

  6. 6

    2 개 테이블의 현재 MySQL 쿼리 최적화

  7. 7

    2 개의 테이블이있는 MySQL 내부 조인 쿼리

  8. 8

    내부 조인이있는 2 개 테이블의 mysql 쿼리

  9. 9

    2 개의 테이블에서 데이터 가져 오기 및 쿼리 작성

  10. 10

    다 대다 관계가있는 두 테이블에 대한 CTE 재귀 쿼리

  11. 11

    서로 다른 테이블에서 2 개의 SQL 쿼리 결합

  12. 12

    개수가있는 TSQL 재귀 쿼리

  13. 13

    테이블을 재사용하는 3 개의 테이블에 대한 SQL 쿼리

  14. 14

    투표에 따라 2 개의 테이블을 조인하는 MySQL 쿼리

  15. 15

    병렬 테이블에 2 개의 mysql 쿼리를 표시하는 방법

  16. 16

    카테고리 트리를 형성하는 2 개의 테이블에 대한 SQL 쿼리

  17. 17

    개수 및 그룹 기준이있는 동일한 테이블에 대한 2 개의 다른 쿼리

  18. 18

    테이블 1에서 2 개의 값을 가져오고 테이블 2에서 가능한 모든 옵션을 결합하는 SQL 쿼리

  19. 19

    두 개의 다른 테이블에서 합계 쿼리

  20. 20

    3 개의 MySQL 테이블을 1 개의 쿼리에 결합

  21. 21

    3 개의 MySQL 테이블을 1 개의 쿼리에 결합

  22. 22

    3 개의 MySQL 테이블을 1 개의 쿼리에 결합

  23. 23

    2 개의 열에 최대 값이있는 테이블에서 레코드를 선택하는 LINQ 쿼리

  24. 24

    2 개의 FK가있는 테이블을 하나의 테이블에 결합

  25. 25

    PHP MySQL의 쿼리 2 개 데이터 테이블과 에코 하나 개의 JSON 배열로 결합?

  26. 26

    트리에서 값의 합계 계산 (재귀 쿼리)

  27. 27

    2 개의 테이블에 대해 1 개의 쿼리로 사용자의 메시지 계산

  28. 28

    2 개의 다른 테이블에서 2 개의 쿼리를 조인하는 방법

  29. 29

    2 개의 쿼리가있는 URL에 대한 재 작성 규칙

뜨겁다태그

보관