select ref, count(distinct id) from table group by ref;
これにより、参照ごとに個別のIDの数がわかります。
select ref, count(*) from table group by ref;
これにより、参照ごとのレコード数がわかります。
編集:
これを試して、必要な出力を取得してください。
select t.*, m.counter
from table t
join (
select ref, count(distinct id) as counter
from table group by ref
) m on t.ref = m.ref
SQLFiddleの例: http://sqlfiddle.com/#!9/2b93c/2