Hi Mark-
This seems useful to know so I poked at it a little bit and think I figured out queries to use both at the repository level and at the LFDS level. Note that I haven't used these for anything real yet, so it's possible I overlooked something.
Repository
There is a built-in view called all_trustees that lists out everybody in the account cache (I'm still not entirely sure what all is in that giant list...all AD users? everybody in LFDS?); if you limit it to isuser = 1 then you'll see the logins like you would see in the admin console. You can then join that on the user_login table via sid to get the list of accounts for that repository and when they last logged in. No logins at all would be null.
SELECT all_trustees.trustee_id
,all_trustees.trustee_name
,all_trustees.descrip
,user_login.last_login
,user_login.last_logout
FROM all_trustees
LEFT OUTER JOIN user_login ON all_trustees.sid = user_login.sid
WHERE all_trustees.isuser = 1
LFDS
The logic is similar, joining the directory_objects table with user_logins. The type field in directory_objects denotes user vs group vs organization, with type = 0 for users. Flags can be used to identify active vs inactive vs some other things but I'm not super familiar with it. Again, last_login will be null if they've never logged in.
SELECT [directory_objects].[name]
,[directory_objects].[type]
,[flags]
,[comments]
,[container_id]
,[path]
,[user_logins].last_login
FROM [directory_objects]
LEFT JOIN user_logins ON directory_objects.sid = user_logins.sid
WHERE [directory_objects].[type] = 0