Как суммировать значения строк путем передачи условия - PullRequest
0 голосов
/ 25 декабря 2018

Я хочу суммировать столбец (цену), пройдя ограничение суммы.
Например, у меня есть таблица ниже, и я хочу ограничить записи 10k или 15k.

ID      PRICE
x1      10,000
x2      20,000
x3      5,000
x4      7,500.00

Iхотите, чтобы результат был

Для <= 10000 </strong>

ID      PRICE
x1      10,000

<= 15000 </strong>

ID      PRICE
x1      10,000
x3      5,000    

<= 14000 </strong>

ID      PRICE
x3      5,000
x4      7,500.00

Я провел некоторый поиск по нему. Я нахожу некоторые оконные функции в postgresql, т.е. функцию OVER.поэтому я написал следующий запрос

WITH cte AS (
      SELECT *, sum(price) OVER (order BY id) AS total
      FROM   test1
     )
SELECT *
FROM   cte
WHERE  total <= amount 

Но условие <= 15000 и <= 14000 не дает правильного результата.</p>

Я хочу суммировать столбец цены и извлечь записи, которые соответствуют результату суммы с нашей заданной суммой или условием, и, более конкретно, он должен возвращать записи, проверяя и возвращая любую другую запись, которая может быть размещена в пределах суммы, котораямы проходим

Пожалуйста, помогите мне за это.

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 декабря 2018

Играть здесь https://www.db -fiddle.com / f / mckDPhtrY4vRrkF2NjhQcC / 0

WITH b AS (
      SELECT *, sum(price) OVER (order BY price) AS total
      FROM   a
     )
SELECT *
FROM   b
WHERE  (total <= your_max OR price <= your_max) AND total >= your_min
0 голосов
/ 25 декабря 2018

ваш Q не ясен, но если вы хотите, вы можете отсортировать столбец цен, чтобы получить минимальную сумму, которая <= предел.попробуйте заказать по цене col: </p>

WITH cte AS (
      SELECT *, sum(price) OVER (order BY price) AS total
      FROM   test1
     )
SELECT *
FROM   cte
WHERE  total <= amount
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...