2010-05-26 7 views
1

Я хочу ResultSet для этой таблицы:суммированием двух colums всего в MySQL

ID Number_of_posts Number_of_user 
1 100    21 
2 23    34 

как

ID Number_of_posts Number_of_user Number_of_posts_AND_Number_of_user 
    1 100    21    178 
    2 23    34    178 
----------------------------------------------- 
     123    55 

Можно ли получить сумму двух colums в другой колонке /, как выход в MySQL ?

+1

Можете ли вы проверить, что вы хотите получить общее количество в каждой строке (178,178) или за идентификатор в каждой строке (121,57)? Первое кажется неправильным, поскольку оно не имеет отношения к ID. – paxdiablo

+0

@paxdiablo: '123 + 55 = 178' – Quassnoi

+1

Да, я понял. Я говорю, что фигура 178 не является атрибутом идентификатора. Было бы разумнее иметь это в итоговой строке внизу с индивидуальными итогами на основе каждой строки. Я отвечаю на вопрос, который, как мне кажется, пытался попросить ОП. Если окажется, что я ошибаюсь, тогда c'est la vie :-) – paxdiablo

ответ

0
SELECT *, 
     (SELECT SUM(Number_of_posts) + SUM(Number_of_user) FROM TABLE) AS total 
FROM table; 

(Edit: первоначально не заметить это было общее общее в последнем столбце.)

3

Чтобы получить перекрестную вкладку итоговые (горизонтальные и вертикали):

select id, 
     number_of_posts as p, 
     number_of_users as u, 
     number_of_posts+number_of_users as p_and_u 
    from tbl 
union all 
select 99999 as id, 
     sum(number_of_posts) as p, 
     sum(number_of_users) as u, 
     sum(number_of_posts+number_of_users) as p_and_u 
    from tbl 
order by 1 

Это даст вам:

id  p  u p_and_u 
----- --- --- ------- 
    1 100 21  121 
    2 23 34  57 
99999 123 55  178 
+0

Это довольно интересный вопрос, но у меня такое чувство, что это не то, что ищет OP. –

+1

Вот почему я попросил разъяснений в комментариях к вопросу. Нет смысла иметь _entire_ total в каждой строке, поскольку это не атрибут ключа (ID). – paxdiablo

+0

Большое спасибо, я не ожидал этого результата, но это может быть то, что я хочу. – JPro

1
SELECT id, number_of_posts, number_of_user, 
     (
     SELECT SUM(number_of_posts + number_of_user) 
     FROM mytable 
     ) 
FROM mytable 
+0

Это дает вам общее количество для всей таблицы в каждой строке, что я не думаю, что они хотели. –

+0

@Dave: На самом деле, я думаю, что это то, что хочет OP –

+0

@Dave: не могли бы вы посмотреть на образец записей, который @op предоставил перед downvoting? – Quassnoi

-1

Поддерживает ли MySQL ROLLUP?

SELECT id, 
     SUM(Number_of_posts) Number_of_posts, 
     SUM(Number_of_user) Number_of_user, 
     SUM(Number_of_posts) + SUM(Number_of_user) Number_of_posts_AND_Number_of_user 
    FROM table 
    GROUP BY ROLLUP(id) 

Edit: на основе быстрого поиска в MySQL последняя строка может быть GROUP BY id WITH ROLLUP.

+1

Это вернет третью запись по сумме, а не по таблице. – Quassnoi

2

Вы неохотно усложняете свой запрос и используете больше памяти, что вам нужно. Потяните записи в одном запросе, затем создайте другой запрос, чтобы получить агрегаты.

Я знаю, что это не отвечает на ваш вопрос, но это то, что вы должны делать вместо этого. =)

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