PostgreSQL a sčítání dat po týdnech

ptacek

PostgreSQL a sčítání dat po týdnech
« kdy: 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.
« Poslední změna: 28. 11. 2012, 10:04:07 od Petr Krčmář »


Alt

Re:PostgreSQL week, year
« Odpověď #1 kdy: 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.

pepa_z

Re:PostgreSQL week, year
« Odpověď #2 kdy: 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')



pepa_z

Re:PostgreSQL week, year
« Odpověď #3 kdy: 28. 11. 2012, 08:42:26 »
jasne ze misto datumu pouziju column s datumem

ptacek

Re:PostgreSQL week, year
« Odpověď #4 kdy: 28. 11. 2012, 09:34:49 »
Děkuji za odpovědi, isoyear je přesně to co potřebuji.


Alt

Re:PostgreSQL a sčítání dat po týdnech
« Odpověď #5 kdy: 28. 11. 2012, 12:29:30 »
este ak vyslovene nepotrebujes zvlast rok a tyzden, mozes pouzit date_trunc ('week', Datum)