Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ptacek 28. 11. 2012, 08:08:45

Název: PostgreSQL a sčítání dat po týdnech
Přispěvatel: ptacek 28. 11. 2012, 08:08:45
Zdravím, mám v databázi údaje: datum a hodnotu. Data jsou za několik let. Potřebuji vysčítat hodnoty po týdnech a myslel jsem, že použiji něco jako:

Kód: [Vybrat]
select (date_part('year',  "Datum"), date_part('week',  "Datum")) as "RokTyden", sum("Hodnota") as "Soucet" from "Tabulka" group by "RokTyden"
Ale mám problém, že pro datum 31.12.12 mi to vrátí (2012, 1) tedy první týden roku 2012, což způsobí špatné výsledky. Potřeboval bych, aby hodnota spadla do prvního týdne roku 2013 tedy (2013, 1). Můžete mi poradit, co s tím? Děkuji.
Název: Re:PostgreSQL week, year
Přispěvatel: Alt 28. 11. 2012, 08:41:07
Ak to vyslovene potrebujes ako rok tyzden, tak namiesto year musis pouzit isoyear cize date_part('isoyear', "Datum"). week uz je ISO8601.
Název: Re:PostgreSQL week, year
Přispěvatel: pepa_z 28. 11. 2012, 08:41:27
http://www.postgresql.org/docs/8.0/static/functions-datetime.html

SELECT EXTRACT(WEEK FROM TIMESTAMP '2001-02-16 20:38:40'),sum(column) from table group by  EXTRACT(WEEK FROM TIMESTAMP '2001-02-16 20:38:40')


Název: Re:PostgreSQL week, year
Přispěvatel: pepa_z 28. 11. 2012, 08:42:26
jasne ze misto datumu pouziju column s datumem
Název: Re:PostgreSQL week, year
Přispěvatel: ptacek 28. 11. 2012, 09:34:49
Děkuji za odpovědi, isoyear je přesně to co potřebuji.
Název: Re:PostgreSQL a sčítání dat po týdnech
Přispěvatel: Alt 28. 11. 2012, 12:29:30
este ak vyslovene nepotrebujes zvlast rok a tyzden, mozes pouzit date_trunc ('week', Datum)