Помогите, пожалуйста, правильно составить такой запрос: Вывести всех продавцов, у которых есть 5 пар клиентов и посчитать 10% от суммы покупок этих клиентов (для теста можно кол-во пар сократить). Вот какой код сейчас есть:
SELECT umr.af_id,
(FLOOR(COUNT(*) / 5) * (SELECT SUM(amount_value * 0.1)
FROM orders io WHERE io.status='Completed')) AS amount
FROM orders io
LEFT JOIN u_af ua on io.uid = ua.uid
LEFT JOIN arur umr on umr.af_id = ua.id
GROUP BY af_id
HAVING COUNT(*) MOD 5 = 0;
Но он выводит что-то неадекватное.
Таблицы и код можно посмотреть по ссылке:
ссылка.
Помогите, пожалуйста, составить этот запрос.
UPD1:
Как я вижу решение:
Взять af_id из таблицы arur
Вычислить все r_w_uid относящиеся к этому af_id из таблицы arur
Подсчитать их количество.
Как только общее количество r_w_uid достигнет, например, 6, то суммировать значения amount_value из таблицы orders относящиеся к uid из таблицы orders при условии status = Completed.
Но я могу с лёгкостью ошибаться.
Умножить полученное в предыдущем пункте значение на 0.1 и вывести значение.
UPD2:
Связи таблиц:
orders.uid = u_af.uid
u_af.id = arur.af_id
UPD3:
Описания таблиц:
1)
orders - таблица с информацией о платежах.
orders.uid - столбец с внутренним id пользователя.
orders.amount_value - столбец с суммой платежа.
orders.status - столбец со статусом платежа.
2)
u_af - таблица нужна для связи таблицы orders с таблицей arur.
3)
arur - таблица отношений между продавцами и клиентами.
arur.af_id - столбец с id продавца.
arur.r_w_uid - столбец с id клиента.
Пары формируются следующим образом:
Если посмотреть в таблицу arur, то можно увидеть что для, например, af_id = 52 есть несколько записей в столбце r_w_uid. Если взять все записи r_w_uid относящиеся af_id = 52 и поделить их на 2, то получим количество пар. Остаток не включается в пары.