Агрегировать по относительному диапазону дат в Oracle SQL

StackOverflow https://stackoverflow.com/questions/19843106

  •  29-07-2022
  •  | 
  •  

Вопрос

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

SELECT count(*) num_elements, sum(some_value) like_to_sum, reldate 
FROM the_large_table 
GROUP BY *** what goes here *** reldate. 

Могу ли я агрегировать результаты, возвращаемые из функции, или есть лучший способ подойти к этой проблеме.

Если я могу агрегировать результат из функции, существуют ли какие-либо функции для этого уже в SQL, или как это можно решить?

Это было полезно?

Решение

SELECT
    COUNT(*) AS num_elements,
    SUM(some_value) AS like_to_sum,
    TRUNC(SYSDATE) - TRUNC(your_date) AS rel_date
FROM the_large_table
GROUP BY TRUNC(SYSDATE) - TRUNC(your_date);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top