У меня есть таблица примерно так:
object_id | vote
1 | 2
1 | -1
1 | 5
2 | 3
2 | 1
3 | 4
3 | -2
Мне нужен этот результат (для этого конкретного примера object_ids 1 и 2 являются частью группы, определенной в другом месте, и я ищу normalized_score, чтобы сумма всегда = 1. object_id 3 является частью неиспользованной группы .):
object_id | normalized_score
1 | 6/10
2 | 4/10
[добавлено 3:05 PM] 10 вот сумма голосов за object_id в (1,2). Есть целый другой набор логики, чтобы придумать (1,2), я просто пытался задать самый чистый вопрос, чтобы люди не беспокоились об этой части.
[добавлено 15:10]. Как указано в комментариях, если оценка для одного из объектов ниже 0, возникает проблема. Вот правило: «ЕСЛИ оценка для любого result_id равна -x, И это минимальная оценка для набора, ДОБАВЬТЕ x для всех оценок, чтобы обнулить минимальную оценку». Я могу делать это в свое свободное время, хотя и за пределами SQL - так что это бонус, только если у кого-то есть кахоны, чтобы попытаться решить его в SQL.
Если я сам присоединюсь, я смогу получить сумму. Я не могу понять, как получить нормированную сумму. В идеале это будет работать как в MySQL 5.x, так и в Sqlite3. В противном случае я могу сделать это с двумя отдельными запросами и просто выполнить работу в постобработке.