PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgresSql :comparaison de deux tables et obtention de son résultat et comparaison avec la troisième table

Cela répond à la version originale du problème.

Vous semblez vouloir comparer les totaux après avoir agrégé les tables 2 et 3. Je ne sais pas ce que table1 est pour. Il semble ne rien faire.

Donc :

select *
from (select partner_id, sum(quantity) as sum_quantity
      from (select tdsl.*,
                   row_number() over (partition by t2.partner_id order by order_date) as seqnum
            from trip_delivery_sales_lines tdsl
           ) tdsl
      where seqnum <= 2
      group by tdsl.partner_id
     ) tdsl left join
     (select cl.partner_id, count(*) as leaf_cnt
      from coupon_leaf cl
      group by cl.partner_id
     ) cl
     on cl.partner_id = tdsl.partner_id
where leaf_cnt is null or sum_quantity > leaf_cnt