SELECT your_columns, COUNT(*) OVER() as Ttl_Rows FROM your_data_set

id | name | Ttl_Rows | —— | —— | —— | 1 | example | 5 | 2 | foo | 5| 3 | bar | 5| 4 | baz | 5| 5 | quux | 5 |

Instead of using two queries to get a count then the line, you can use an aggregate as a window function and use the full result set as the window.

This can be used as a base for further calculation without the complexity of extra self joins.