Postgresql 如何正确使用减号运算符?
出于某种原因,下面的查询只返回第一个查询的sumamount,而不是第一个sumamount和第二个sumamount之间的预期差异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_
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中没有减号。如果要使用集合减号,请使用除,如果要算术减号,请使用-。