if you want see account_status and the count()- try this: SELECT
CASE WHEN AND c.regdate > EXTRACT(epoch FROM (now() - INTERVAL '14 day')) THEN 'trial' WHEN last_pay > EXTRACT(epoch FROM (now() - INTERVAL '37 day')) THEN 'paying' END as account_status, c <http://c.id/>ount(*) FROM public.clients c WHERE ( (last_pay > EXTRACT('epoch' FROM now() - '12 Months'::INTERVAL)) ) group by 1 ORDER BY 1 10 Mar 2017 Cum, 00:02 tarihinde, Patrick B <patrickbake...@gmail.com> şunu yazdı: > 2017-03-09 23:15 GMT+13:00 vinny <vi...@xs4all.nl>: > > On 2017-03-09 05:27, Patrick B wrote: > > Hi guys. How can I count using 'CASE WHEN'? > > Example: > > SELECT > > > CASE > > > WHEN AND c.regdate > EXTRACT(epoch FROM (now() - INTERVAL > '14 day')) > > > THEN 'trial' > > > WHEN last_pay > EXTRACT(epoch FROM (now() - INTERVAL '37 > day')) > > > THEN 'paying' > > > END as account_status, > > > c.id [1] > > > FROM public.clients c > > > WHERE ( > > > (last_pay > EXTRACT('epoch' FROM now() - '12 > Months'::INTERVAL)) > > > ) > > > ORDER BY 1 > > I wanna know how many of 'trial' and 'paying' customers the query > returns. can you guys please advice how to do it? > > Thanks > Patrick > > > comparisons like "A>B" return a boolean. Booleans can be cast to integers, > and integers can be summed. > > SUM((A>B)::int) > > But depending on the situation, indexes etc it could be faster to run e > separate count query, you'll have to test that. > > > > Could you please guys give me a query as an example? > > Thanks > P. >