We talked about hit ratio. We didn't talk about which hit ratio ? Hit ratio is nothing but contention for request interms of hits and misses. Could be with Memory/RBS/IO contention etc., Depending up on what you are dealing with, you have increase that paticular component of Oracle. If its memory increase db_buffers and other parameters of that deal with SGA. If its with RBS, try increasing RBS`s... and so on..
Since the users' query seems to be fetching more and more data every day. As the data gets to increase, the amount of information that could be stored in the buffer_cache decreases, since it had to service different users queries. as a result the miss rate increases and draws down the hit ratio. To better serve the problem, refine the user queries and use bind variables. Also as Reddy pointed out, increase the apporpriate parameters to serve the need.
Another possibility might be that someone is running a large query(s) from time to time that are pushing other blocks out of the cache. You may want to consider increasing your buffer cache size or implementing multiple buffer pools and caching oft used tables.
As far as some users getting higher ratio's than others, that's entirely possible. It could be that a majority of users are querying oft used tables which means they will have a better chance of getting blocks from the cache. If some other users are querying more historical data or different types of data on a more infrequent basis the blocks might be getting aged out of the cache because of the more frequently executed queries.
As was suggested, the best thing you can do is tune for overall hit ratios and look at your biggest resource hogs and try to optimize those.
Senior Database Administrator