Keep count in temporary variable for later use in query
You need to base your insert statement on a select:

WITH my_count (cnt) AS (
  SELECT count(emp_name) 
  FROM employee 
  WHERE joined_date &lt; '2017-11-30'::Date AND region = 'UK'
)
INSERT INTO my_summary (property_key, month, property_value) 
select 'count des', '2016-11-30', cnt
from my_count;


Or use a scalar select:

WITH my_count (cnt) AS (
  SELECT count(emp_name) 
  FROM employee 
  WHERE joined_date &lt; '2017-11-30'::Date AND region = 'UK'
)
INSERT INTO my_summary (property_key, month, property_value) 
values
('count des', '2016-11-30', (select cnt from my_count));


Also, both methods could be implemented without a CTE. Taking the first query as an example, the variation without a CTE would look like this:

INSERT INTO my_summary (property_key, month, property_value) 
SELECT 'count des', '2016-11-30', count(emp_name) 
FROM employee 
WHERE joined_date &lt; '2017-11-30'::Date AND region = 'UK';