Значение MIN из набора данных и сумма - PullRequest
0 голосов
/ 16 января 2019

У меня есть данные:

ID  DUE         AMT
4   2018-03-10  335.75
3   2018-04-10  334.75
1   2018-05-10  333.75
2   2018-06-10  332.75

Мне нужно извлечь:

  1. Наименьший срок (03-10)
  2. для минимальной задолженности (335,75)
  3. сумма в столбце amt.

Может ли это быть сделано в одном запросе?

Ответы [ 2 ]

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

Старайтесь держать плотный ранг:

with tt as (
  select 4 id, date '2018-03-10' due, 335.75 amt from dual union all
  select 3 id, date '2018-04-10' due, 334.75 amt from dual union all
  select 1 id, date '2018-05-10' due, 333.75 amt from dual union all
  select 2 id, date '2018-06-10' due, 332.75 amt from dual
)
select min(due) least_due,
       min(amt) keep (dense_rank first order by due) amt_for_least_due,
       sum(amt) sum_amt
from   tt
0 голосов
/ 16 января 2019

Мы можем попробовать использовать аналитические функции здесь:

WITH cte AS (
    SELECT ID, DUE, AMOUNT,
        SUM(AMOUNT) OVER () AS TOTALAMOUNT,
        ROW_NUMBER() OVER (ORDER BY DUE) rn
    FROM yourTable
)

SELECT ID, DUE, AMOUNT, TOTALAMOUNT
FROM cte
WHERE rn = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...