IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Viktória
Člen
Avatar
Viktória :28.11.2018 10:19

Mám problém s vložením výpočtu do již vytvořeného prázdného sloupce v tabulce. Půdní tabulka:

id y sum y
1 1 NULL
2 2 NULL
3 3 NULL

Sum y vypočítam pomocí SELECT SUM(y) OVER(ORDER BY id), to funguje, avšak už žádným způsobem se mi nedaří vložit výsledek to tabulky.

Zkusil jsem: Zkoušela sem:
Insert into table1 (sum y) SELECT SUM(y) OVER(ORDER BY id) FROM table1 where id>=1;
Update table1 set sum y= (SELECT SUM(y) OVER(ORDER BY id)) FROM table1 where id>=1;
.. a různé obměny, ale nic z toho nefunguje...Tyto příkazy jsme měla odzkoušené a při jiných výpočtech jsem s tím neměla žádný problém.

Chci docílit: Výslední tabulka by měla být :

id y sum y
1 1 1
2 2 3
3 3 6

Vždy tedy potřebuji sečíst všechny předchozí řádky v sloupci y a jejich sumu vložit do sum y.

Ďekuji za rady

 
Odpovědět
28.11.2018 10:19
Avatar
Roman
Člen
Avatar
Odpovídá na Viktória
Roman:28.11.2018 11:12

Ten SELECT musis umistit za UPDATE ne za SET viz priklad

UPDATE
  table1
  (SELECT SUM(y) AS ysum FROM table1) AS rr
SET result=rr.ysum
WHERE result IS NULL;
 
Nahoru Odpovědět
28.11.2018 11:12
Avatar
Roman
Člen
Avatar
Roman:28.11.2018 11:40

Zapomnel jsem na carku

UPDATE
  table1,
  (SELECT SUM(y) AS ysum FROM table1) AS rr
SET result=rr.ysum
WHERE result IS NULL;
 
Nahoru Odpovědět
28.11.2018 11:40
Avatar
plelovsky
Člen
Avatar
Odpovídá na Roman
plelovsky:28.11.2018 11:43

A zkusil jsi co to udělá?

 
Nahoru Odpovědět
28.11.2018 11:43
Avatar
Roman
Člen
Avatar
Odpovídá na plelovsky
Roman:28.11.2018 11:49

Ne nezkousel. Proc bych mel? Ale kdyz uz ses zeptal tak jsem to hodil do dbfiddle a funguje jak ma na vutvorene vzorove tabulce naplnene daty. Ja jsem neuvedl prsne to co tazatelka chce jen jsem napsal jak ma postupovat. Myslim, ze neni cilem diskuze psat hotova reseni, ale pomahat si k nim dojit.

 
Nahoru Odpovědět
28.11.2018 11:49
Avatar
plelovsky
Člen
Avatar
plelovsky:28.11.2018 11:55
UPDATE t
SET
    t.[sum y] = s.sum
FROM
    table1 t
    INNER JOIN (
           SELECT
                    id
                  , sum = SUM(y) OVER (ORDER BY id)
           FROM
                  table1
    ) s ON s.id = t.id
;

BTW Používat mezery, diakritiku, interpunkci v názvech je blbost.

 
Nahoru Odpovědět
28.11.2018 11:55
Avatar
Jaroslav David:11.2.2019 15:54

A co takto:

update Table1 set SumY = (Select Sum(y) from Table1 as a where a.id <= Table1.ID)

 
Nahoru Odpovědět
11.2.2019 15:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.