2010-05-26 51 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

您不必要地复杂化查询,并使用更多内存。在一个查询中拉出记录,然后进行另一个查询以获取聚合。

我知道它没有回答你的问题,但它是你应该做的。 =)