2017-01-22 1 views
0

У меня возникли проблемы с поиском способа выполнения простого добавления на таблицу maria db, SQL.Как я могу суммировать каждый N строк на maria db SQL?

я имею таблицу под названием Traffic:

| start_time  | end_time   | col1 | col2 | 
| 1485075600.000000 | 1485075900.000000 | 10 | 20 | 
| 1485075900.000000 | 1485076200.000000 | 20 | 30 | 
| 1485076200.000000 | 1485076500.000000 | 40 | 50 | 
| 1485076500.000000 | 1485076800.000000 | 50 | 60 | 

Как я могу суммировать каждые N столбцов (более col1 и col2)?

Я имею в виду, чтобы объединить строки и суммировать значения col1 и col2.

считая данную таблицу, и N = 2, результат будет:

| start_time  | end_time   | col1 | col2| 
| 1485075600.000000 | 1485076200.000000 | 30 | 50 | 
| 1485076200.000000 | 1485076800.000000 | 90 | 110 | 

если размер таблицы не является кратным из N, принять все, что вы можете.

У кого-нибудь есть идеи? У меня нет идентификатора для включения.

+0

Какая версия? Я думаю о функциях окон. –

ответ

0

Вы должны сделать это, перечислив строки. Чтобы быть верным, вам нужен столбец для указания таблиц упорядочения. SQL представляют неупорядоченные наборами, поэтому для заказа требуется столбец.

Предполагаю, что это start_time. Остальное просто агрегация и арифметика:

select min(start_time) as start_time, max(end_time) as end_time, 
     sum(col1) as col1, sum(col2) as col2 
from (select t.*, (@rn := @rn + 1) as rn 
     from traffic t cross join 
      (select @rn := 0) params 
     order by start_time 
    ) t 
group by floor((rn - 1)/@N); 

значение @N является размер групп.

+0

Спасибо! Эй, по какой-то причине, когда я его выполняю, он объединяет все строки в один. Вы можете объяснить, пожалуйста? –

+0

@Amit_A. , , Можете ли вы настроить SQL Fiddle? Я не вижу очевидной ошибки в приведенном выше коде. Это произойдет, если вы оставите «GROUP BY», если '@ rn' не был правильно инициализирован, или если вы не используете' @ N' (просто замените его на «2», если это то, что вы хотите. –

+0

Эй, спасибо снова за ответ. Я изменил N соответственно, но он не изменит результаты. Вот sqlfidle: http://sqlfiddle.com/#!9/a5855/2 –

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