![](/img/trans.png)
[英]Get the sum of a column value for all rows with same value in different column
[英]Get all rows and apply sum on a column
我有一個包含四列和五行的表,我希望所有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
嗯。 。 。
select name, id, rank, points,
(select sum(t2.points) from t t2 where t2.rank > 4) as `sum`
from t
where rank > 4;
這將sum
放在每一行上,但這似乎是一種合理的方法。
對於您和其他人,我使用的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 |
+------+----+------+--------+-----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.