SELECT DISTINCT stkno as st, (SELECT COUNT(`stkno`) FROM partners_downloads WHERE `status` = 'Done' AND stkno = st GROUP BY stkno) as `done`, (SELECT COUNT(`stkno`) FROM partners_downloads WHERE `status` = 'InProcess' AND stkno = st GROUP BY stkno) as `inprocess`, (SELECT COUNT(`stkno`) FROM partners_downloads WHERE `status` = 'Pending' AND stkno = st GROUP BY stkno) as `pending` FROM partners_downloads pd ORDER BY `done` DESC TABLE STRUCTURE: int did (11) int uid (11) varchar stkno (100) varchar status (100) datetime added datetime changed