Just posting a query that I had to run recently and seemed useful. It calculates mobile device and app usage as a percentage of all hits per user. It enabled me to graph and get a sense of how many users are "mobile only".
select p.unique_name, (r.mobile_count* 1.0/ total)*100 as mobileratio, (r.app_count* 1.0/ total)*100 as appratio
from (
select
user_id,
count(CASE WHEN lower(user_agent) like '%candroid%'
or lower(user_agent) like '%canvas%'
or lower(user_agent) like '%teacher%'
THEN 1
END) as app_count,
count(CASE WHEN (lower(user_agent) like '%android%'
or lower(user_agent) like '%ios%'
or lower(user_agent) like '%iphone%')
and not (lower(user_agent) like '%candroid%'
or lower(user_agent) like '%canvas%'
or lower(user_agent) like '%teacher%'
)
THEN 1
END) as mobile_count,
count(*) as total
from requests
where timestamp_month = '2021-06'
group by 1
) r
join pseudonym_dim p on p.user_id = r.user_id
;