簡體   English   中英

獲取所有行並在列上應用總和

[英]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 |
+------+----+------+--------+-----+

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM