Cílem je použít poddotaz k výpočtu součtu, pak provést výpočet a vložit hodnoty do jednoho sloupce odděleného čárkou, který můžete transformovat do pole v php:
select v.ip, group_concat(v.visits / iv.maxvisits) as ratings
from visit v join
(SELECT ip, id, visits, max(visits) as maxvisits
FROM visit
GROUP BY ip
) iv
on v.ip = iv.ip
group by v.ip;
EDIT:
Tabulky v SQL jsou ze své podstaty neuspořádané a řazení v SQL není stabilní (to znamená, že původní pořadí není zachováno). Pořadí můžete zadat v group_concat()
tvrzení. Například následující by seřadilo výsledky podle id
:
select v.ip, group_concat(v.visits / iv.maxvisits order by id) as ratings
from visit v join
(SELECT ip, id, visits, max(visits) as maxvisits
FROM visit
GROUP BY ip
) iv
on v.ip = iv.ip
group by v.ip;
A toto by seřadilo podle nejvyššího hodnocení jako první:
select v.ip, group_concat(v.visits / iv.maxvisits order by v.visits desc) as ratings
Seznam můžete zkomplikovat tak, aby obsahoval id
v něm také:
select v.ip,
group_concat(concat(v.id, ':', v.visits / iv.maxvisits)) as ratings