2010-05-26 53 views
1

我要爲這個表一個結果:總結2個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 

是否有可能/得到兩柱的側向承載力的總和另一列在MySQL輸出?

+1

你可以驗證你想要每行(178,178)的全部總數或每行的每個ID(121,57)?前者似乎是錯誤的,因爲它根本與ID沒有任何關係。 – paxdiablo 2010-05-26 15:35:02

+0

@paxdiablo:'123 + 55 = 178' – Quassnoi 2010-05-26 15:37:35

+1

是的,我明白了。我所說的是178圖不是ID的屬性。將每行的基於ID的總數排序在最底部的行中會更有意義。我正在回答我認爲OP想要問的問題。如果事實證明我錯了,那麼c'est la vie :-) – paxdiablo 2010-05-26 15:39:25

回答

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

(編輯:最初沒有注意到它在最後一列總總爲。)

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所期待的。 – 2010-05-26 15:34:39

+1

這就是爲什麼我要求在問題評論中予以澄清的原因。因爲它不是密鑰(ID)的屬性,所以在每一行上都有_entire_ total是沒有意義的。 – paxdiablo 2010-05-26 15:36:48

+0

非常感謝,我並不期待這個結果,但這可能是我想要的。 – JPro 2010-05-26 17:04:21

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

這給了你每行的整個表的總數,我不認爲這是他們想要的。 – 2010-05-26 15:31:01

+0

@Dave:其實,我認爲這就是OP想要的 – 2010-05-26 15:31:41

+0

@Dave:你可以看下@op提供的示例記錄集,然後再進行downvoting? – Quassnoi 2010-05-26 15:32:09

-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) 

編輯:基於快速搜索,在MySQL中最後一行可能是GROUP BY id WITH ROLLUP

+1

這將以記錄方式返回第三筆款項,而不是按表格方式。 – Quassnoi 2010-05-26 15:31:19

2

您不必要地複雜化查詢,並使用更多內存。在一個查詢中拉出記錄,然後進行另一個查詢以獲取聚合。

我知道它沒有回答你的問題,但它是你應該做的。 =)