Выберите количество из многократных столов и группы одной областью

У меня есть "пользовательский" стол с областями
user_name, user_id

У меня есть таблицы данных как

data_table_2012_10
data_table_2012_11
data_table_2012_12
data_table_2013_01
data_table_2013_02

каждая таблица содержит следующие области

user_id, type ('ALARM', 'EMERGENCY', 'ALIVE', 'DEAD'), date_time

В каждом столе будут миллионы отчетов.

Я должен выбрать количество типа от data_tables в течение периода времени, данного пользователем, а также иметь, чтобы получить соответствующее имя пользователя с помощью user_id.

Может кто-то выручать меня с лучшим решением.

2
nl ja de
вы составляете таблицу в течение каждого месяца года? это - плохой дизайн схемы потому что вы can' t едва знают где стол присоединяться.
добавлено автор John Woo, источник

2 ответы

Попробуйте этот вопрос, где DATE1 и DATE2 - ваш диапазон дат. Вы должны союз все столы во внутреннем вопросе. Также можно попытаться сделать вопрос динамично, чтобы включать во внутренний вопрос только те столы, которые находятся в диапазоне дат, который вы используете:

select t.user_id,t.type, MAX(users.user_name), SUM(t.cnt)
from
(
select user_id,type,count(*) cnt
from data_table_2012_10 where date_time between DATE1 and DATE2
group by user_id,type

union all

select user_id,type,count(*) cnt
from data_table_2012_11 where date_time between DATE1 and DATE2
group by user_id,type

union all
.........................................

union all
select user_id,type,count(*) cnt
from data_table_2013_02 where date_time between DATE1 and DATE2
group by user_id,type
) t
left join users on (t.user_id=users.user_id)
group by t.user_id,t.type
1
добавлено
Большое спасибо, это работает как ожидалось.
добавлено автор Jayakumar Bellie, источник

Не забудьте не использовать СОЮЗ, но СОЮЗ ВСЕ, поскольку UNION возвратит только слияние подобные ряды в один, и это может вызвать проблему

0
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw