Getting both Having and Not Having in same row I have a query which I get the customers that have more than 1 orders
However, I would like to get the number of customer that has only 1 orders as well and divide them like 1 orders / more than 1 order

So that my table will have 3 colums

one_order, more_than_one_order, divided

I tried different approaches like duplicating the query like =1 but it is not the proper way

Query

SELECT COUNT(*)
FROM (
select customer_id from orders GROUP BY customer_id HAVING COUNT(order_id)&gt;1
) A
You can use a case expression like:

SELECT count(case when cnt = 1 then 1 end) as one_order
     , count(case when cnt &gt; 1 then 1 end) as more_than_one_order
FROM (
    select customer_id, count(1) as cnt from orders GROUP BY customer_id
) as T


You can also use a filter clause for the count aggregates:

SELECT count(1) filter (where cnt = 1) as one_order
     , count(1) filter (where cnt &gt; 1) as more_than_one_order
FROM ...


For the third attribute you can either reuse the aggregates:

select count(1) filter (where cnt = 1) as ...
     , count(1) filter (where cnt &gt; 1) as ...
     , count(1) filter (where cnt = 1) / count(1) filter (where cnt &gt; 1) as ...


or add another level of nesting: 

select one_order
     , more_than_one_order
     , one_order / more_than_one_order 
from (
    SELECT count(1) filter (where cnt = 1) as one_order
         , count(1) filter (where cnt &gt; 1) as more_than_one_order
    FROM (
        select customer_id, count(1) as cnt 
        from orders 
        GROUP BY customer_id
    ) as T1
) as T2