2016-07-30 2 views
1

私は4列と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

これはできません。ただ1つの行に値を持つことはできません。 – Jens

+0

私はmysql @ praveenを使用しています。他の列のNullも使用できます。私は同じテーブルのデータに対してdbを2回ヒットしたくない –

答えて

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

関連する問題