It should be possible to retrieve this information from the analytics database.
Not sure of the report time frames, but there are various aggregation tables which could be used and which group the data including the user id.
e.g. JIVEDW_ACTIVITY_AGG_DAY groups the datase by day, user, activity type and object
You could create a query of the form select from JIVEDW_ACTIVITY_AGG_DAY where user = youruser and direct_object_type=discussiontype and activity_type=VIEW
OR for your other query example
select unique user_id from JIVE_DW_ACTIVITY_AGG_DAY where direct_object_type=DOCUMENT and direct_dw_object_id=DOCUMENT_DW_ID
There also weekly and monthly aggregate tables depending on your needs. You should also ensure that your query scales as these tables may grow and grow depending on your settings.
Hope this helps.
In the case of discussions, you can do this by placing the Username, Object Type Name, and Activity Count into the Result Objects
In the Query Filters box, place Activity Type ID, specificing 10 for Views, and Object ID, specifying 1 for discussion threads.
The end result should look something like this:
Click Run Query should generate the report.