Чтобы найти значение, представляющее определенную сумму в последовательности сумм в SQLite

#sql #sum

#sql #сумма

Вопрос:

Я создал следующую таблицу turns :

 CREATE TABLE "turns" (
    "id"    INTEGER NOT NULL UNIQUE,
    "name"  TEXT NOT NULL,
    "weight"    INTEGER NOT NULL,
    "turn"  INTEGER NOT NULL,
    PRIMARY KEY("id" AUTOINCREMENT)
)
  

Вот как выглядит таблица:

таблица превращается

Я пытаюсь получить имя человека, в этот момент сумма весов = 1000

что в данном случае Chillwell (или «chill», как указано на изображении)

Я написал следующее

 Select name from turns where weight = (select sum(weight) from turns where sum(weight) = 1000);
  

Это выдает ошибку неправильного использования

 Execution finished with errors.
Result: misuse of aggregate: sum()
At line 1:
Select name from turns where weight = (select sum(weight) from turns where sum(weight) = 1000);
  

Можете ли вы дать мне несколько советов по этому поводу?

Комментарии:

1. Вы должны размещать данные вместо изображений

2. Пожалуйста, пометьте свой вопрос базой данных, которую вы используете: mysql, oracle, sqlserver …?

Ответ №1:

Используйте кумулятивную сумму:

 select t.*
from (select t.*,
             sum(weight) over (order by turn) as running_weight
      from turns t
     ) t
where running_weight >= 1000 and running_weight - weight < 1000
  

Комментарии:

1. К сожалению, это не сработало, когда я применил его к другому редактору кода. Я получил синтаксическую ошибку рядом с «(»