У меня есть таблица, например, так:Rollup Колонка для нормированных сумм (SQL) - Часть 1
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, И это минимальный балл для набора, ADD x для всех оценок, чтобы обнулить минимальный балл». Я могу сделать это в свое время, хотя вне SQL - так что это бонус только в том случае, если у кого-то есть cahones, чтобы попытаться решить его в SQL.
Если я сам присоединяюсь, я могу получить сумму. Я не могу понять, как получить нормализованную сумму. В идеале это будет работать как в MySQL 5.x, так и в Sqlite3. В противном случае я могу сделать это с двумя отдельными запросами и просто выполнить работу по последующей обработке.
Где здесь «10»? –
Если голосование должно быть из 10, то как вы можете разрешить отрицательные голоса? –
Простите, что 10 - это сумма голосов, где object_id в (1,2). Я обновлю вопрос –