В настоящее время я делаю заказ по последнему активному времени пользователя, где самые последние активные пользователи отображаются вверху.
"profile".last_active_time DESC NULLS LAST,
"profile".id DESC
Я бы хотел показать больше женщин вверху, поэтому я попытался это, но ясно, что в конечном итоге все женщины показываются вверху.
CASE WHEN "profile_date:gender_type".type_id = 'FEMALE' THEN 1 ELSE 0 END,
"profile".last_active_time DESC NULLS LAST,
"profile".id DESC
Как бы я упорядочил по последнему активному времени в основном, но взвешенно, так что женщины получают немного больший приоритет, чтобы иметь возможность показать например, мужчина, который был активен совсем недавно в тот же день?
Пример:
- мужчина последний активен 1 час a go, женщина последний активен 1 неделя a go => самец появляется первым
- самец последний раз активен 1 час a go, самка последний раз активен 2 часа a go => самка имеет шанс появиться раньше, чем самец
В данный момент пользователь A всегда появляется перед пользователем B, если A последний раз был активным перед B. Если пользователь A является мужчиной, а пользователь B - женским, а A был последним активным перед B, A все еще всегда отображается перед Б. Я хочу, чтобы, если пользователь А был мужчиной, а пользователь B - женщина, и A был последним активным до B, B мог бы появиться до A.
Это не должно быть сделано в явные периоды времени, и я предположил бы random()
взвешенные проценты будут работать. Не обязательно быть идеальным.