2016-07-30 16 views
1

我有一個包含四列和五行的表,我想要所有5列的總和爲一列。在MySQL中可能嗎?獲取所有行並在列上應用總和

name id rank points 
sam 1 4  34 
ram 2 6  45 
hari 3 1  87 
kum 4 7  56 
raj 5 5  20 

我需要的是名稱ID等級分點的總和,其中職級以上4

預期結果

name id rank points sum 
ram 2 6  45 121 
kum 4 7  56 
raj 5 5  20 
+1

這將是真正有用的,如果你可以給SQL DML。同時,只能在SQL中使用不同的查詢。我相信你不能合併他們。 –

+0

這是不可能的,你不能只有一行中的值 – Jens

+0

我正在使用mysql @ praveen。其他列中的空值也是可以接受的。我不想爲相同的表格數據命中db兩次 –

回答

2

嗯。 。 。

select name, id, rank, points, 
     (select sum(t2.points) from t t2 where t2.rank > 4) as `sum` 
from t 
where rank > 4; 

這使sum在每一行,但這似乎是一個合理的方法。

1

對於你和其他人,我用了DML & DDL是:

CREATE TABLE `users` (
    `name` varchar(5), 
    `id` int, 
    `rank` int, 
    `points` int 
); 

INSERT INTO users (
    `name`, `id`, `rank`, `points` 
) VALUES (
    'sam', 1, 4, 34 
), (
    'ram', 2, 6, 45 
), (
    'hari', 3, 1, 87 
), (
    'kum', 4, 7, 56 
), (
    'raj', 5, 5, 20 
); 

做這件事,你需要有一個單獨的查詢:

SELECT SUM(`points`) FROM `users` WHERE `rank` > 4 

,我會建議你在最後加上這個。

SELECT *, (
    SELECT SUM(`points`) FROM `users` WHERE `rank` > 4 
) AS `sum` FROM `users` WHERE `rank` > 4 

上面要把這作爲輸出:

+------+----+------+--------+-----+ 
| name | id | rank | points | sum | 
+------+----+------+--------+-----+ 
| ram | 2 | 6 |  45 | 121 | 
| kum | 4 | 7 |  56 | 121 | 
| raj | 5 | 5 |  20 | 121 | 
+------+----+------+--------+-----+ 

小提琴:http://www.sqlfiddle.com/#!9/1dd6260/5