2016-08-12 2 views
0

У меня есть 5 таблиц со следующими свойствами,Суммируя все 5 табличных значений для формирования новой таблицы?

+--------------------+-------------+------+-----+---------+-------+ 
| Field    | Type  | Null | Key | Default | Extra | 
+--------------------+-------------+------+-----+---------+-------+ 
| actor_id   | int(11)  | YES | MUL | NULL |  | 
| activity_object_id | int(11)  | YES | MUL | NULL |  | 
| interest_level  | tinyint(4) | YES |  | 10  |  | 
| feed_view   | smallint(6) | YES |  | 0  |  | 
| quick_view   | smallint(6) | YES |  | 0  |  | 
| page_view   | smallint(6) | YES |  | 0  |  | 
| fullscreen_view | smallint(6) | YES |  | 0  |  | 
| reserved1   | int(11)  | YES |  | NULL |  | 
| reserved2   | int(11)  | YES |  | NULL |  | 
| reserved3   | int(11)  | YES |  | NULL |  | 
| created_at   | datetime | YES |  | NULL |  | 
| updated_at   | datetime | YES |  | NULL |  | 
+--------------------+-------------+------+-----+---------+-------+ 

Как мы можем создать новую временную таблицу, которая является суммой всех значений 5 таблицы. activity_object_id уникален, и одна таблица может содержать activity_object_id, а другая - нет.

В таблице 1 есть один файл active_object_id «gowthamkey», таблица2 имеет тот же ключ «gowthamkey», а table3 может не иметь «gowthamkey». Поэтому я хочу суммировать все значения таблицы в новую таблицу, так что у него есть один ключ «gowthamkey», где значение сумма:

feed_view, quick_view, page_view, fullscreen_view, Reserved1, reserved2, reserved3 кроме actor_id , interest_level, created_at, updated_at.

Вот мой запрос согласно @bummer ответ:

CREATE TABLE actor_activity_object_stats_temp_7_days_12 AS 
select actor_id, activity_object_id, interest_level, SUM(feed_view) AS feed_view, SUM(quick_view) AS quick_view, SUM(fullscreen_view) as fullscreen_view 
from (
    select * from actor_activity_object_stats_temp_2016_04_29 
    union all, 
    select * from actor_activity_object_stats_temp_2016_04_30 
    union all, 
    select * from actor_activity_object_stats_temp_2016_05_01 
    union all, 
    select * from actor_activity_object_stats_temp_2016_05_02 
    union all, 
    select * from actor_activity_object_stats_temp_2016_05_03 
    union all, 
    select * from actor_activity_object_stats_temp_2016_05_04 
    union all, 
    select * from actor_activity_object_stats_temp_2016_05_05 
    union all, 
    select * from actor_activity_object_stats_temp_2016_05_06 
    union all, 
    select * from actor_activity_object_stats_temp_2016_05_07 
    union all, 
    select * from actor_activity_object_stats_temp_2016_05_08) AS X 
group by activity_object_id 
+0

Почему у вас есть пять столов, если они все одинаковы? – e4c5

+0

Ежедневные таблицы, основанные на нескольких статистических данных. Теперь мы хотим, чтобы еженедельная статистика основывалась на всех этих ежедневных статистических данных. –

ответ

1

Начните с UNION, затем используйте SUM(), чтобы добавить все значения из всех таблиц для тех же activity_object_id.

CREATE TABLE new_table 
AS SELECT activity_object_id, SUM(feed_view) AS feed_view, SUM(quick_view) AS quick_view, ... 
    FROM (SELECT * FROM table1 
      UNION ALL 
      SELECT * FROM table2 
      UNION ALL 
      SELECT * FROM table3 
      ...) AS x 
    GROUP BY activity_object_id 
+0

Возможно, это должно выполнить эту работу. Спасибо :) –

+0

@bammer, получил синтаксическую ошибку возле select * FROM table1 –

+0

Редактировать вопрос и показать весь запрос. – Barmar

0

Я считаю, что это должно решить проблему.

create table new_table 
as 
select * from table1 
union 
select * from table2 
union 
select * from table3 
union 
select * from table4 
union 
select * from table5) 

здесь sql fiddle для иллюстрации.

+0

На каком основании он получит уникальное значение (active_objective_id). Это не работает. Он создает таблицу с повторяющимися значениями (имя - скалистый - в моем случае active_object_id, который должен быть уникальным) http://sqlfiddle.com/#!9/56f52c/1 –

+0

Что значит, он должен быть уникальным? что я понял из вашего вопроса, было то, что в каждой таблице уже есть уникальный 'active_objective_id'. так что это просто объединение таблиц. вы говорите, что каждая таблица может иметь похожие 'active_objective_id'? –

+0

Нет, может быть, ошибка. Это одинаково для всех таблиц. Но в таблице 1 есть один active_object_id, который говорит «gowthamkey», таблица 2 имеет тот же ключ «gowthamkey», а таблица 3 может не иметь «gowthamkey». Поэтому я хочу подвести все значения таблиц в новую таблицу, так что у нее есть один ключ «gowthamkey», где значения представляют собой сумму feed_view, quick_view, page_view, fullscreen_view, reserved1, reserved2, reserved3. –

Смежные вопросы