PostgreSQL: как обрезать и группировать временные метки?

Я работаю с базой данных и использую следующий запрос:

      SELECT
  evt_block_time,
  COUNT(*) filter (
    WHERE
      uniswap_version = 'v1'
  ) OVER (
    ORDER BY
      evt_block_time
  ) as v1_pairs,
  COUNT(*) filter (
    WHERE
      uniswap_version = 'v2'
  ) OVER (
    ORDER BY
      evt_block_time
  ) as v2_pairs
FROM
  (
    SELECT
      'v2' as uniswap_version,
      evt_block_time
    FROM
      uniswap_v2."Factory_evt_PairCreated"
    UNION ALL
    SELECT
      'v1' as uniswap_version,
      evt_block_time
    FROM
      uniswap."Factory_evt_NewExchange"
    ORDER BY
      evt_block_time
  ) as creations

Вот что он возвращает:

Я хотел бы сделать несколько вещей. Прежде всего, усеките временные метки evt_block_time по неделям, а затем сгруппируйте по неделям.

  • ПРИМЕЧАНИЕ. Я пытался использовать date_trunc('week', evt_block_time) в каждом из моих операторов выбора, но это выдает ошибку. См. ниже:
      SELECT
  date_trunc('week', evt_block_time),
  COUNT(*) filter (
    WHERE
      uniswap_version = 'v1'
  ) OVER (
    ORDER BY
      evt_block_time
  ) as v1_pairs,
  COUNT(*) filter (
    WHERE
      uniswap_version = 'v2'
  ) OVER (
    ORDER BY
      evt_block_time
  ) as v2_pairs
FROM
  (
    SELECT
      'v2' as uniswap_version,
      date_trunc('week', evt_block_time)
    FROM
      uniswap_v2."Factory_evt_PairCreated"
    UNION ALL
    SELECT
      'v1' as uniswap_version,
      date_trunc('week', evt_block_time)
    FROM
      uniswap."Factory_evt_NewExchange"
    ORDER BY
      evt_block_time
  ) as creations

который возвращает:

Столбец "evt_block_time" не существует в строке 31, позиции 26.

Кроме того, хотя я думаю, что это не требуется, я хотел бы запрашивать данные только за последние 52 недели (1 год).

Очевидно, я новичок в этом SQL, но я стараюсь изо всех сил. Любая помощь будет оценена по достоинству!

1 ответ

Ваш подзапросcreationsне имеет столбца с псевдонимомevt_block_time, следовательно, вы не можете использовать это имя столбца в основном запросе.

Другие вопросы по тегам