2016-07-30 5 views
1

Ich habe eine Tabelle mit vier Spalten und 5 Zeilen, ich möchte alle 5 Zeilen mit der Summe einer Spalte. Ist es in MySQL möglich?Holen Sie sich alle Zeilen und wenden Sie Summe auf eine Spalte

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

Was ich brauche, ist Name id Rang Punkte und Summe der Punkte wo Rang oben 4.

Ergebnis erwartet

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

Es wäre wirklich hilfreich, wenn Sie die SQL-DML geben könnte. Gleichzeitig ist es möglich, nur eine andere Abfrage in SQL zu verwenden. Du kannst sie nicht kombinieren, glaube ich. –

+0

Es ist nicht möglich, Sie können keinen Wert in nur einer Reihe haben – Jens

+0

Ich verwende mysql @ praveen. Null in anderen Spalten ist ebenfalls akzeptabel. Ich möchte Db nicht zweimal für gleiche Tabellendaten schlagen –

Antwort

2

Hmmm. . .

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

Damit liegt die sum in jeder Zeile, aber das scheint wie ein vernünftiger Ansatz.

1

für Sie und andere, ich die DML & DDL verwendet wird:

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

Denn es tun, Sie Notwendigkeit eine separate Abfrage haben:

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

Und ich würde schlage vor, Sie am Ende anhängen.

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

Die oben geben dies als Ausgabe:

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

Fiddle: http://www.sqlfiddle.com/#!9/1dd6260/5

Verwandte Themen