Re: [PERFORM] Hi - Mailing list pgsql-performance

From David G. Johnston
Subject Re: [PERFORM] Hi
Date
Msg-id CAKFQuwaJ=xhBL4oWAayTj9-rUC4owNeopxi4c4HyW1WG-SnK8g@mail.gmail.com
Whole thread Raw
In response to Re: [PERFORM] Hi  (Daulat Ram <Daulat.Ram@cyient.com>)
List pgsql-performance
On Thu, Aug 24, 2017 at 11:49 PM, Daulat Ram <Daulat.Ram@cyient.com> wrote:

Hello,

 

Would I request to help me on this query.

 

SELECT 'Inspection Completed' as "ALL Status" ,COUNT(*) as "Number of Count" FROM ud_document WHERE status = 'Inspection Completed' union SELECT 'Pending', COUNT(*) FROM ud_document WHERE status = 'Pending' union SELECT 'Approved', COUNT(*) FROM ud_document WHERE status = 'Approved' union SELECT 'Rejected', COUNT(*) FROM ud_document WHERE status = 'Rejected' union SELECT 'Payment Due',count(*) from ud_document where payment_status = 'Payment Due' union SELECT 'Payment Done' ,count(*) from ud_document where payment_status = 'Payment Done' 

 

And now I want to exclude the uniqueid= '201708141701018' from the above query. how it can be ???



​Your use of UNION here seems necessary.  Just write a normal GROUP BY aggregation query.  You might need to get a bit creative since you are collapsing status and payment_status into a single column.  "CASE ... WHEN ... THEN ... ELSE ... END" is quite helpful for doing stuff like that.  For now I'll just leave them as two columns.

​SELECT status, payment_status, count(*)
FROM ud_document
WHERE uniqueid <> '201708141701018'
GROUP BY 1, 2;

David J.

pgsql-performance by date:

Previous
From: Felix Geisendörfer
Date:
Subject: [PERFORM] 10x faster sort performance on Skylake CPU vs Ivy Bridge
Next
From: Tom Lane
Date:
Subject: Re: [PERFORM] 10x faster sort performance on Skylake CPU vs Ivy Bridge