Postgresql 如何正确使用减号运算符?

Postgresql 如何正确使用减号运算符?,postgresql,Postgresql,出于某种原因,下面的查询只返回第一个查询的sumamount,而不是第一个sumamount和第二个sumamount之间的预期差异 select sum(amount) from( SELECT UNIQUE_MEM_ID , Amount FROM yi_fourmpanel.card_panel WHERE (DESCRIPTION iLIKE '%some criteria%') GROUP BY UNIQUE_MEM_

出于某种原因,下面的查询只返回第一个查询的sumamount,而不是第一个sumamount和第二个sumamount之间的预期差异

select sum(amount) from(
SELECT  
        UNIQUE_MEM_ID ,
        Amount

FROM    yi_fourmpanel.card_panel
WHERE (DESCRIPTION iLIKE '%some criteria%')


GROUP BY 
         UNIQUE_MEM_ID ,
         Amount)

    minus

select sum(amount) from(
SELECT  
        UNIQUE_MEM_ID ,
        Amount

FROM    yi_fourmpanel.card_panel
WHERE (DESCRIPTION iLIKE '%some criteria%')

AND is_duplicate!=1
AND amount >0
AND currency_id = 152
AND transaction_base_type = 'debit'

GROUP BY 
         UNIQUE_MEM_ID ,
         Amount)
减/除是基于集合的运算符,不是算术运算符。我想你想要的是:

WITH cte AS (
  SELECT  UNIQUE_MEM_ID ,  Amount
  FROM    yi_fourmpanel.card_panel
  WHERE (DESCRIPTION iLIKE '%some criteria%')
    AND transaction_base_type <> 'debit'
  UNION ALL
  SELECT  UNIQUE_MEM_ID ,  -Amount
  FROM    yi_fourmpanel.card_panel
  WHERE (DESCRIPTION iLIKE '%some criteria%')
    AND is_duplicate!=1
    AND amount >0
    AND currency_id = 152
    AND transaction_base_type = 'debit'
)
SELECT UNIQUE_MEM_ID, SUM(Amount) AS total
FROM cte
GROUP BY UNIQUE_MEM_ID
减/除是基于集合的运算符,不是算术运算符。我想你想要的是:

WITH cte AS (
  SELECT  UNIQUE_MEM_ID ,  Amount
  FROM    yi_fourmpanel.card_panel
  WHERE (DESCRIPTION iLIKE '%some criteria%')
    AND transaction_base_type <> 'debit'
  UNION ALL
  SELECT  UNIQUE_MEM_ID ,  -Amount
  FROM    yi_fourmpanel.card_panel
  WHERE (DESCRIPTION iLIKE '%some criteria%')
    AND is_duplicate!=1
    AND amount >0
    AND currency_id = 152
    AND transaction_base_type = 'debit'
)
SELECT UNIQUE_MEM_ID, SUM(Amount) AS total
FROM cte
GROUP BY UNIQUE_MEM_ID

也许两个查询之间没有交集,Postgres中没有负号。如果你想使用集合减号,除了,如果你想使用算术减号-。可能两个查询之间没有交集。Postgres中没有减号。如果要使用集合减号,请使用除,如果要算术减号,请使用-。