Почему вы хотите использовать loop
?Это гораздо лучше сделать простым запросом:
SELECT ud.UserId, COUNT(*), COUNT(DISTINCT ud.ProductID)
FROM users_data ud
GROUP BY ud.UserID;
Если вы хотите, чтобы определенные пользователи, вы можете использовать предложение WHERE
:
SELECT ud.UserId, COUNT(*), COUNT(DISTINCT ud.ProductID)
FROM users_data ud
WHERE ud.UserId IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
GROUP BY ud.UserID;
Примечание: я недумаю, что JOIN
необходимо.