Meine Aufgabenstellung:
Zaehle Datensaetze, gruppiert nach Woche
Tabelle orders
ID- Int, unique
datum- timestamp without tz
quasi
Code:
select count (id) as ZAHL_DIE_RAUSKOMMEN_SOLL from orders
group by to_char (XXX)
Woche 52 des Vorjahres enthaelt einige Tage diesen Jahres.
Bei Gruppierung nach Jahr & Woche:
Code:
select count (id) as ZAHL_DIE_RAUSKOMMEN_SOLL ,
to_char(datum,'yyyy iw') as BEREICH
from orders
where (datum between '2009-12-25 00:00:00.000000' and '2011-08-25 23:59:59.999999' )
group by BEREICH
order by BEREICH asc
kommt folgende tabelle raus:
ZDRS BEREICH
308 | 2009 52 |
301 | 2009 53 |
784 | 2010 01 |
648 | 2010 02 |
| ... | ... |
4888 | 2010 50 |
3990 | 2010 51 |
3027 | 2010 52 |
433 | 2010 53 |
5463 | 2011 01 |
| 4195 | 2011 02 |
| 4442 | 2011 03 |
... | ... |
2524 | 2011 52 |
Das hier in
rot ist quatsch.(das in grün genauso, aber hier egal)
In Wirklichkeit handelt es sich nicht um die 52. Woche des Jahres 2011,
sondern um die Tage, die von 2010 KW52 rueberhaengen nach 2011.
Anderer Loesungsweg:
Code:
select count (id) as ZAHL_DIE_RAUSKOMMEN_SOLL ,
to_char(datum,'yyyy MM iw') as BEREICH
from orders
where ( datum between '2009-12-25 00:00:00.000000' and '2011-08-25 23:59:59.999999' )
group by BEREICH
order by BEREICH asc
ergibt
308 | 2009 12 52 |
301 | 2009 12 53 |
784 | 2010 01 01 |
648 | 2010 01 02 |
717 | 2010 01 03 |
727 | 2010 01 04 |
... | ... |
433 | 2010 01 53 |
697 | 2010 02 05 |
777 | 2010 02 06 |
3990 | 2010 12 51 |
3027 | 2010 12 52 |
5463 | 2011 01 01 |
4779 | 2011 01 02 |
5126 | 2011 01 03 |
5396 | 2011 01 04 |
6470 | 2011 01 05 |
2524 | 2011 01 52 |
4660 | 2011 02 05 |
das ist besser, (zumindest die Zahlen werden richtig abgefragt)
allerdings muessen die werte in
rot und
gruen jeweils addiert werden damit das ganze am Ende so aussieht:
308 | 2009 12 52 |
734 | 2009 12 53 | |
784 | 2010 01 01 |
648 | 2010 01 02 |
717 | 2010 01 03 |
727 | 2010 01 04 |
... | ... |
697 | 2010 02 05 |
777 | 2010 02 06 |
3990 | 2010 12 51 |
5551 | 2010 12 52 | |
5463 | 2011 01 01 |
4779 | 2011 01 02 |
5126 | 2011 01 03 |
5396 | 2011 01 04 |
6470 | 2011 01 05 |
4660 | 2011 02 05 |
also Summe (letzte KW des Vorjahres+Tage die dr�berh�ngen in dieses Jahr)
(nur diese be*** Einteilung in Wochen macht solche Probleme...)
besser?
Lesezeichen