What is the correct algorithm to calculate worker & pool hashrate I need to display the pool and worker hashrates on my website.
The pool uses PSQL.
hashesPerSecond = math.pow(2, 32) * proofsOfWork / secondsElapsed

where proofsOfWork is the number of difficulty 1 proofs of work (aka shares) that the user or pool has found during secondsElapsed seconds.

If you use variable difficulty, then you can count a proof of work from someone mining at difficulty X the same as X proofs of work at difficulty 1.

For mhps divide by 1e6. For ghps divide by 1e9. And so on..

math.pow(2, 32) == 4294967296