Суммировать записи каждые 30 минут в Oracle SQL [дубликат]

Из вашего описания, похоже, что вы хотите «зарезервировать» выделенное пространство хранения векторных t_Names.

Обратите внимание, что resize инициализирует новый выделенный вектор, где reserve просто выделяет, но не строится. Следовательно, «резерв» намного быстрее, чем «resize»

. Вы можете обратиться к документации относительно разницы resize и reserve

1
задан user272735 26 June 2015 в 08:11
поделиться

1 ответ

Вы можете сгенерировать список всех полу часовых интервалов с помощью запроса:

SELECT TO_CHAR( TO_DATE( '0601', 'HH24MI' ) + (LEVEL - 1)/48, 'HH24MI' ) AS timeslot
FROM   DUAL
CONNECT BY
       LEVEL <= 33;

Затем вы можете добавить его в свой запрос с помощью LEFT OUTER JOIN; что-то вроде этого:

WITH half_hours AS (
  SELECT TO_CHAR( TO_DATE( '0601', 'HH24MI' ) + (LEVEL - 1)/48, 'HH24MI' ) AS timeslot
  FROM   DUAL
  CONNECT BY
         LEVEL <= 33
), data AS (
  <your_query>
)
SELECT h.timeslot,
       COALESCE( d.value, 0 ) AS value
FROM   half_hours h
       LEFT OUTER JOIN data d
       ON h.timeslot = d.timeslot;
1
ответ дан MT0 16 August 2018 в 05:29
поделиться
  • 1
    Спасибо вам, что именно мне нужно. Прекрасно работает в моем случае. – bala 25 June 2015 в 19:57
  • 2
    Если это решило ваш вопрос, тогда вы можете пометить ответ как принятый, чтобы указать, что вопрос закрыт. – MT0 26 June 2015 в 08:17
Другие вопросы по тегам:

Похожие вопросы: