#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. К сожалению, это не сработало, когда я применил его к другому редактору кода. Я получил синтаксическую ошибку рядом с «(»