[SQL] weken automatisch uithalen

Pagina: 1
Acties:
  • 574 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 53729

Topicstarter
ik moet een rapport bouwen op basis van uren die een werknemer maakt.
ik heb al een SQL commando voor dag, Maand en jaar
voor maand heb ik add_months gebruikt. zo kan ik makkelijk naar de volgende maand zonder teveel te wijzigen.
voor jaar heb ik between commando gebruikt van 1 januari tot 31 december.

dit kon ik nog wel maar alleen de weken kom ik niet uit.
Ik kan dan wel de between maandag - vrijdag gebruiken maar om dit 52 x 4 keer te gaan doen is het niet
praktisch en niet handig.

is er misschien een andere manier om dit op te lossen?
Ik heb met google en de GOT search gezocht maar kon niet vinden wat ik moet hebben.

voorbeeld van de maand:


code:
1
2
3
4
5
6
7
8
9
10
11
select
sum(ug.reg_uren) "Aantal uren per maand"
from 
      uurreg.t_reguur ug,
      alg.t_personeel ap
where
     ap.naam = 'naamwerknemer' and
     ug.reg_datum between (to_char(add_months (to_date('01-01-2003', 'dd-mm-YYYY'), 7))) and (to_char(add_months (to_date('31-01-2003', 'dd-mm-YYYY'), 7))) and 
     ap.personeel = ug.reg_personeelcode 
order by 
     ug.reg_Datum


alvast bedankt :)

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 06:35

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 snapt het niet helemaal...

Je wilt dus een stukje code maken, welke de begin- en einddatum van een week geeft aan de hand van een weeknummer?

[ Voor 16% gewijzigd door gorgi_19 op 11-02-2004 13:02 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 22-05 08:46

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

DatePart :?

Welke SQL gebruik je? Ook handig om te weten ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

met trunc(datum,'ww') krijg je de eerste dag van de betreffende week.
met to_number(to_char(datum,'ww')) het weeknummer van een datum.
Dezelfde statements kunnen ook met 'iw' ipv. 'ww' voor ISO-weken.

Maar wat je precies probeert te vragen begrijp ik niet goed.

Het is trouwens Oracle SQL waar het hier om gaat.

Who is John Galt?


Acties:
  • 0 Henk 'm!

Anoniem: 53729

Topicstarter
RobIII schreef op 11 februari 2004 @ 13:02:
DatePart :?

Welke SQL gebruik je? Ook handig om te weten ;)
Oracle :)
gorgi_19 schreef op 11 februari 2004 @ 13:02:
* gorgi_19 snapt het niet helemaal...

Je wilt dus een stukje code maken, welke de begin- en einddatum van een week geeft aan de hand van een weeknummer?
ik wil de weken hebben zonder elke week apart in te voeren.
dus niet: ug.reg_datum between '01-01-2004' and '07-01-2004'
dan kan ik het wel 52 keer doen maal 4 jaar.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16-05 11:46

Bosmonster

*zucht*

[rml][ datum] Berekenen data in weeknr[/rml]

Volgens mij zit jij met hetzelfde als ik. Je hebt een weeknummer en wilt daar de dagen bij ophalen. Makkelijkste en efficientste is dan om deze eerst te berekenen.

Kweet niet of je PHP gebruikt of een andere taal, maar het principe lijkt me hetzelfde..

[ Voor 17% gewijzigd door Bosmonster op 11-02-2004 13:33 ]


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Je hebt de dagen wellicht helemaal niet nodig.
code:
1
where to_number(to_char(datum,'ww')) = weeknummer
werkt ook gewoon.

Who is John Galt?


Acties:
  • 0 Henk 'm!

Anoniem: 53729

Topicstarter
Bosmonster schreef op 11 februari 2004 @ 13:32:
[rml][ datum] Berekenen data in weeknr[/rml]

Volgens mij zit jij met hetzelfde als ik. Je hebt een weeknummer en wilt daar de dagen bij ophalen. Makkelijkste en efficientste is dan om deze eerst te berekenen.

Kweet niet of je PHP gebruikt of een andere taal, maar het principe lijkt me hetzelfde..
Bijna hetzelfde probleem inderdaad.
ik moet via een weeknummer de 7 dagen hebben.
Hoe moet je ze dan berekenen :? het liefst wil ik het in SQL doen anders in java

Ik gebruik style report met java dus.

Acties:
  • 0 Henk 'm!

Anoniem: 53729

Topicstarter
justmental schreef op 11 februari 2004 @ 13:35:
Je hebt de dagen wellicht helemaal niet nodig.
code:
1
where to_number(to_char(datum,'ww')) = weeknummer
werkt ook gewoon.
maar dat is toch voor 1 datum? :?
en is voor 1 dag en niet voor een hele week

code:
1
2
3
4
5
6
select
    ug.reg_uren, ap.naam,
    trunc (to_date('04-01-2004'), 'iw'),  trunc (to_date('10-01-2004'), 'iw')
from 
     uurreg.t_reguur ug,
     alg.t_personeel ap


is voor 1 hele week

[ Voor 26% gewijzigd door Anoniem: 53729 op 11-02-2004 13:50 ]


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Anoniem: 53729 schreef op 11 februari 2004 @ 13:50:
maar dat is toch voor 1 datum? :?
en is voor 1 dag en niet voor een hele week
Hiermee selecteer je gewoon alle dagen die voldoen aan dat weeknummer, dus de hele week.

edit:

maar een gok naar de bedoeling:

code:
1
2
3
4
5
6
7
8
9
select
    sum(ug.reg_uren)
,   min(datum)
,               max(datum)
from 
     uurreg.t_reguur ug,
     alg.t_personeel ap
where    to_number(to_char(datum,'iw')) = p_weeknummer
and       to_number(to_char(datum,'yyyy')) = p_jaar

[ Voor 41% gewijzigd door justmental op 11-02-2004 13:57 ]

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16-05 11:46

Bosmonster

*zucht*

justmental schreef op 11 februari 2004 @ 13:35:
Je hebt de dagen wellicht helemaal niet nodig.
code:
1
where to_number(to_char(datum,'ww')) = weeknummer
werkt ook gewoon.
Dan moet je wel een functionele index aanleggen.. want als je dit op een grote database gaat proberen kun je je performance wel gedag zwaaien :P

Of gewoon in Java doen in jouw geval dan.. lijkt me een stuk efficienter dan in de query proberen te verwerken.

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Bosmonster schreef op 11 februari 2004 @ 14:10:
Dan moet je wel een functionele index aanleggen.. want als je dit op een grote database gaat proberen kun je je performance wel gedag zwaaien :P

Of gewoon in Java doen in jouw geval dan.. lijkt me een stuk efficienter dan in de query proberen te verwerken.
Klopt, maar dat lijkt me sterk in dit geval.
Aantal personeel*uren wordt pas groot bij hele grote multinationals ;)

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • BrZ
  • Registratie: Maart 2000
  • Laatst online: 27-05 18:47

BrZ

Ehm, kan je niet gewoon GROUP BY to_number(to_char(datum,'ww')) doen?
(Over de performance wil ik dan neit veel zeggen :P)

Acties:
  • 0 Henk 'm!

  • JaQ
  • Registratie: Juni 2001
  • Nu online

JaQ

ik zou de ww functie van oracle niet gebruiken, alle functies met weeknummers van Oracle zijn brak. Doe maar eens een willekeurige selectie op de verschillende week 1's: resultaat is dat 1 januari altijd in week 1 valt en dat klopt niet. Ow trouwens.. dit was in ieder geval zo tot en met Oracle 8.1.7, of dit voor Oracle 9 nog steeds zo is weet ik niet zeker (maar verwacht ik wel)

In een grijs verleden heb ik daar zelf ooit een een stukje plsql voor geschreven wat ergens hier op GoT ook rond zou moeten zweven (alleen got knows where).

Egoist: A person of low taste, more interested in themselves than in me


Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

DrFrankenstoner schreef op 11 februari 2004 @ 15:55:
ik zou de ww functie van oracle niet gebruiken, alle functies met weeknummers van Oracle zijn brak. Doe maar eens een willekeurige selectie op de verschillende week 1's: resultaat is dat 1 januari altijd in week 1 valt en dat klopt niet. Ow trouwens.. dit was in ieder geval zo tot en met Oracle 8.1.7, of dit voor Oracle 9 nog steeds zo is weet ik niet zeker (maar verwacht ik wel)

In een grijs verleden heb ik daar zelf ooit een een stukje plsql voor geschreven wat ergens hier op GoT ook rond zou moeten zweven (alleen got knows where).
Zo zit die methodiek nou eenmaal in elkaar, dat is niet brak ofzo.
Voor ISO weken zoals wij die kennen is iw beschikbaar.

Who is John Galt?

Pagina: 1