Скажем, у меня есть таблица, подобная следующей, которая представляет путь от 1 -> 2 -> 3 -> 4 -> 5:
+------+----+--------+
| from | to | weight |
+------+----+--------+
| a | b | 1 |
| b | c | 2 |
| c | d | 1 |
| d | e | 1 |
| e | f | 3 |
+------+----+--------+
Каждая строка знает, откуда она и откудасобирается
Я хотел бы объединить итоговую строку, которая принимает начальное имя, конечное имя и общий вес, например, так:
+------+----+--------+
| from | to | weight |
+------+----+--------+
| a | f | 8 |
+------+----+--------+
Первая таблица является результатом CTEвыражения, и я могу легко получить сумму предыдущего запроса с помощью SUM
, но я не могу заставить LAST_VALUE
работать аналогично:
WITH RECURSIVE cte AS (
...
)
SELECT *
FROM cte
UNION ALL
SELECT 'total', FIRST_VALUE(from), LAST_VALUE(to), SUM(weight)
FROM cte
FIRST_VALUE
и для LAST_VALUE
функций требуются пункты OVER
, которые, кажется, добавляют ненужные сложности к тому, что я ожидал, поэтому я думаю, что я иду в неправильном направлении с этим. Есть идеи, как этого добиться?