Идеята е да използвате подзаявка, за да изчислите сумата, след това да направите изчислението и да поставите стойностите в една колона, разделена със запетая, която можете да трансформирате в масив в 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;
РЕДАКТИРАНЕ:
Таблиците в SQL по своята същност са неподредени и сортирането в SQL не е стабилно (което означава, че оригиналният ред не се запазва). Можете да посочите подреждане в group_concat()
изявление. Например, следното ще подреди резултатите по 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;
И това ще бъде подредено първо по най-високия рейтинг:
select v.ip, group_concat(v.visits / iv.maxvisits order by v.visits desc) as ratings
Можете да направите списъка по-сложен, за да включите id
и в него:
select v.ip,
group_concat(concat(v.id, ':', v.visits / iv.maxvisits)) as ratings