добавление всех столбцов из нескольких таблиц - PullRequest
0 голосов
/ 18 марта 2020

У меня простой вопрос.

Мне нужно подсчитать все записи из нескольких таблиц с указанием дня и часа и сложить их все вместе в одну итоговую таблицу.

Таким образом, запрос для каждой вкладки выглядит примерно так:

выберите timestamp_trun c (отметка времени, день), timestamp_trun c (отметка времени, час) час, количество (*) от table_1

выберите timestamp_trun c (метка времени, день) дата, timestamp_trun c (метка времени, час) час, счет (*) от table_2

выберите timestamp_trun c (отметка времени, день) дата, отметка времени_тран c (отметка времени, час) час, отсчет (*) от table_3

и т. д.

Я хотел бы объединить все результаты, показывающие общее количество записей за каждый день и час из этих таблиц.

Ожидаемые результаты будут такими:

дата, час, количество записей таблицы 1, количество записей таблицы 2, количество записей таблицы 3 ........

Какой самый оптимальный SQL запрос для этого?

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT 
  TIMESTAMP_TRUNC(TIMESTAMP, DAY) day, 
  EXTRACT(HOUR FROM TIMESTAMP) hour, 
  COUNT(*) cnt,
  _TABLE_SUFFIX AS table
FROM `project.dataset.table_*`
GROUP BY day, hour, table
1 голос
/ 18 марта 2020

Вероятно, самый простой способ - это union их вместе и агрегация:

select timestamp_trunc(timestamp, hour) as hh,
       countif(which = 1) as num_1,
       countif(which = 2) as num_2
from ((select timestamp, 1 as which
       from table_1
      ) union all
      (select timestamp, 2 as which
       from table_2
      ) union all
      . . .
     ) t
group hh
order by hh;

Вы используете timestamp_trunc(). Возвращает метку времени, усеченную до часа - нет необходимости также включать дату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...