hooman182:
私はデータを持っています
user indeks_sum sks_sum year
2000 76 21 20191
2000 NULL 21 20192
2012 12 24 20191
2012 NULL 8 20192
2042 21 16 20191
2042 NULL 9 20192
2069 8 2 20191
2069 4 1 20192
期待される結果 :
user indeks_sum sks_sum year
2000 76 21 20191
2000 76 42 20192
2012 12 24 20191
2012 12 32 20192
2042 21 16 20191
2042 21 25 20192
2069 8 2 20191
2069 12 3 20192
indeks_sum
そしてsks_sum
、すべての増加year
、私は試してみます
select * user,sum(indeks_sum) as indeks_sum, sum(sks_sum) as sks_sum, year
from ips
where year <= year
group by user,year
それでも同じ結果。
前もって感謝します
GMB:
あなたは、ウィンドウ関数を使用することができます - MySQLの/ MariaDBのバージョンがサポートしている場合:これは、ウィンドウの合計のために良いユースケースです。
select
user,
sum(indeks_sum) over(partition by user order by year)) indeks_sum,
sum(sks_sum) over(partition by user order by year) sks_sum,
year
from ips
order by user, year
ユーザー| indeks_sum | sks_sum | 年 ---:| ---------:| ------:| ----: 2000 | 76 | 21 | 20191 2000年| 76 | 42 | 20192 2012年の| 12 | 24 | 20191 2012年の| 12 | 32 | 20192 2042 | 21 | 16 | 20191 2042 | 21 | 25 | 20192 2069 | 8 | 2 | 20191 2069 | 4 | 3 | 20192
以前のバージョンでは、ここで相関サブクエリを使用して一つのアプローチは以下のとおりです。
select
i.user,
(select sum(i1.indeks_sum) from ips i1 where i1.user = i.user and i1.year <= i.year) indeks_sum,
(select sum(i1.sks_sum) from ips i1 where i1.user = i.user and i1.year <= i.year) sks_sum,
i.year
from ips i
order by i.user, i.year
パフォーマンスのために、上の指標を検討(user, year, indeks_sum)
し、別のを(user, year, sks_sum)
。