Как выбрать значения, каждое из которых зависит от ранее агрегированного состояния? - PullRequest
0 голосов
/ 16 января 2019

У меня есть следующая таблица:

|-----|-----|
| i d | val |
|-----|-----|
|  1  |  1  |
|-----|-----|
|  2  |  4  |
|-----|-----|
|  3  |  3  |
|-----|-----|
|  4  |  7  |
|-----|-----|

Могу ли я получить следующий вывод:

|-----|
| sum |
|-----|
|  1  |
|-----|
|  5  |
|-----|
|  8  |
|-----|
| 1 5 |
|-----|

, используя один SQLite3 SELECT-запрос?Я знаю, что это может быть легко достигнуто с помощью переменных, но в SQLite3 их нет.Может быть, какой-то рекурсивный запрос?Спасибо.

Ответы [ 3 ]

0 голосов
/ 16 января 2019

Для уточнения вопроса вы можете написать:

select
  sum(val) over(order by id)
from my_table
0 голосов
/ 16 января 2019

Используя порядок столбца id и, если вам нужен только столбец sum, вы можете сделать это:

select (select sum(val) from tablename where id <= t.id) sum
from tablename t
0 голосов
/ 16 января 2019

Нет.

В таблицах таблиц реляционной базы данных нет порядка.Если вы укажете порядок для строк, тогда можно написать запрос.

Теперь вы можете добавить дополнительный столбец для сортировки строк.Например:

| val | sort
|-----|-----
|  1  |  10
|  4  |  20
|  3  |  30
|  7  |  40

Запрос может быть:

select
  sum(val) over(order by sort)
from my_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...