KPI's uit database halen

Status
Niet open voor verdere reacties.

noukietje

Gebruiker
Lid geworden
3 apr 2006
Berichten
106
Beste,

Het scenario is het volgende. Er zijn 2 type werken. Type 1 moet binnen de 48h worden voltooid, type 2 binnen de 72h. Het begin en einduur van elk type wordt steeds ingegeven. Ik zou graag van elk type het % bekomen dat over de 48h voor type 1 en over de 72h voor type 2 zit.

Groetjes,
Julie
 
Hallo Julie,

Om te beginnen moet je een query maken die de aantallen per KPI berekent. Vervolgens maak je een query waarbij je deze query toevoegt, en de incidenten tabel (waarop je neem ik aan de aantallen ook moet baseren). De KPI's uit de query en de tabel koppel je vervolgens aan elkaar, en daarna kun je de berekeningen maken, waarbij je de formules baseert op de waarden uit de query Totalen.
Je kunt denk ik ook een Kruistabel maken, en daar vandaan werken.
 
Hey,

Aangezien dat het enkele jaren geleden is dat ik met Access nog aan de slag ben gegaan moet het voor mij iets (lees heel veel) concreter.
Als ik het goed begrijp;
Dus een 1ste Query aanmaken. In mijn tabel zitten de velden begin en einduur en type. Dus in de eerste Query maak ik een berekening waarin ik het verschil tssn mijn begin en einduur bereken. Dan is mijn vraag waar plaats ik deze berekening en welke is het.

Mijn tweede Query baseer ik dan op Query 1 (heb ik nog gegevens nodig uit een andere tabel?) en daar noteer ik een formule die het aantal telt die erbuiten valt? Is het dit wat je bedoelt? Ik heb totaal geen idee wat je bedoelt met een incidenten tabel. Zoals ik al zei het zit allemaal héél ver weg.

Grtjs,
Julie
 
Niet helemaal zoals ik het in gedachten had ;)
Maar ik heb ondertussen een variant bedacht die het resultaat in één query zet, dus zonder Totalen query (al heb je uiteraard wel een totaaltelling nodig)

Code:
SELECT IIf(Round(([eindtijd]-[begintijd])*24,0)>72,"C",IIf(Round(([eindtijd]-[begintijd])*24,0)>48,"B","A")) AS KPI, Count(IncidentID) AS Aantal, (select count(*) from tIncident) AS Totaal, [Aantal]/[Totaal] AS Percentage
FROM tIncident
GROUP BY IIf(Round(([eindtijd]-[begintijd])*24,0)>72,"C",IIf(Round(([eindtijd]-[begintijd])*24,0)>48,"B","A"));

De reden dat ik een "incidententabel" noemde was omdat ik gelijk aan een storingentabel moest denken met kpi's... In dit voorbeeld moet je nog wel de namen van de tabel, en de veldnamen aanpassen, maar dat lijkt mij niet zo moeilijk.
 
Bekijk bijlage Recruitering.rar


Ik blijf je stalken maar als leek blijf je Chinees spreken. In bijlage vind je mijn bestand. Kan je me specifiek zeggen hoe ik mijn Query moet maken en waar ik precies (in welk veld) die code moet gebruiken? Alvast bedankt!

Ik heb nog een tweede vraag. Bij mijn Query zal je zien dat ik daar een lijst van positieve kandidaten heb. Kandidaten die in de tabel opstart staan en nog geen einde hebben gekregen zouden uit het resultaat van de Query moeten gaan. Wanneer de reden einde ingevuld staat kan deze persoon er terug inkomen, afhankelijk van welke code er gebruikt is. Is dit mogelijk?

Grtjs,
Jul
 
Ik snap wel dat je niet snapt wat ik bedoel; het soort query dat je wilt hebben is ook niet de eenvoudigste om mee te beginnen. Daarom dacht ik ook om maar eens te beginnen met de simpelste oplossing met twee queries. Omdat ik in jouw tabellen eigenlijk niet zie hoe je de kpi query wilt maken, want ik zie geen datumvelden om mee te rekenen, heb ik mijn voorbeeldje maar in jouw db geplakt.
In bijgaande db zie je beide oplossingen: de twee-query oplossing (qKPI 2 is daarbij het eindresultaat) en de één-query oplossing, waarbij alles dus tegelijk wordt uitgerekend.

Kijk maar eens of dit:
a) is wat je bedoelt
b) te snappen is...
 

Bijlagen

Hallo,

Jouw Query begrijp ik denk ik. Je maakt dus de som van de uren en wanneer het groter dan 72h is geef je er de waarde C aan en indien het groter dan 48h is geef je er de waarde A & B aan. Deze tel je vervolgens en zet je om in een %.
Als mijn samenvatting correct is, is het niet dit wat ik zoek.

Mijn uren haal ik uit de tabellen vacature (Attentia ...) & voorstelling (Attentia ...). In de tabel vacature zie je ook het veld type. Wanneer een vacature type 1 binnenkomt moet er binnen de 48h iemand zijn voorgesteld, Type 2 binnen de 72h. Dus de som van mijn velden Attentia in beide tabellen moet ik maken maar dan moet ik dit nog koppelen aan mijn type vacature. Dus indien we 10 voorstellingen hebben van het type 1 en 1 voorstelling was 50h later dan de post van de vacature dan wil ik het % 90 zien en hetzelfde voor Type 2.

Om het nog iets moeilijker te maken zou ik ook het % willen kennen van het aantal vacatures waar er nooit iemand is op voorgesteld. m.a.w. die opgenomen is in mijn veld vacature maar het id kan niet worden gekoppeld aan de voorstelling omdat er nooit een geweest is.

Grtjs,
Jul
 
Hey,

In bijlage nogmaals mijn database. Door jouw voorgaande post kon ik al een aantal zaken recht zetten waaraan ik niet had gedacht. Ik heb ook een Query ontworpen waar mijn uren worden uitgerekend maar ik heb de indruk dat dit niet 100% klopt.

Grtjs,
JulBekijk bijlage Recruitering.rar
 
Ik heb er overdag wat lastig tijd voor, maar ik zal er vanavond eens rustig naar kijken...
 
Geen probleem, ik heb vandaag een dagje vrij dus in bijlage vind je nog een nieuwere versie. Waarbij ik op nog enkele problemen stuit.
Bij mijn Query's ga je nog een andere zien KPIQual. Zoals je ziet heb ik hier met een parameter gewerkt met de bedoeling vervolgens het aantal te tellen en dan om te zetten naar %. Maar het eerste stuk werkt al niet. Normaal gezien als ik de vraag beantwoord met IF mag hij mij maar 1 persoon tonen en dit klopt niet. Ik weet ook niet of dit de goede manier is om tot dit resultaat te komen.

Verder heb ik nog een probleem in mijn formulier "einde tewerkstelling". Bij het opzoeken in het eerste veld zou ik normaal een nr + naam moeten zien. Ik zie echter 2 nr's. Enig idee hoe dit komt?Bekijk bijlage Recruitering.rar

Grtjs,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan