In a 20 users private community a topic can have 100 views count. Since new topic visits after topic_view_duration_hours
are calculated as new view count. But select count(*) from topic_views where topic_id = X
will never exceed the count 20. That’s why Topic.views count is different. This is applicable for open communities too.
I’m not sure here. I will check it on Monday.