SQL count meerdere maanden

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas IJzelendoorn

Bas IJzelendoorn

24/08/2011 14:17:28
Quote Anchor link
Beste,

Ik ben met een systeem bezig en daar zit een onderdeel statistieken in, echter loop ik met de query wat vast en te stoeien.

In een database staat het volgende:

id -> 1
dag -> 01
maand -> 01
jaar -> 2011
begintijd -> 07:00
eindtijd -> 08:00
totaletijd -> 01:00

Nu wil ik van de verschillende maanden, getallen genereren hoeveel dagen er gewerkt zijn en later ook optellen hoeveel uur er per maand gewerkt is. Deze getallen komen uiteindelijk in een staafdiagram (google api). Nu is mijn vraag wat is de beste, snelste en makkelijkste manier om dit te doen.

Want ik heb nu het volgende, maar dat lijkt mij niet echt de snelste oplossing:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$sql
= "SELECT COUNT(*) AS dagen_juli FROM tijdregistratie WHERE eigenaar='".$gebruikersnaam."' AND maand='07' AND jaar='2011'";
$res = mysql_query($sql);
$reg = mysql_fetch_array($res);
$wj = $reg['dagen_juli'];
?>

(even los van de beveiliging! want ik weet dat deze nu niet goed zit ;) is nu even niet belangrijk)

Nu zou ik zeg maar 12x zo een query moeten maken voordat ik alle waardes van dit jaar zou hebben. Volgens mij kan dit beter met Group By maar ik kom er maar niet uit hoe ik de waardes van de verschillende maanden dan bij elkaar krijg. Dus:

maand 1: 5 werkdagen
maand 2: 1 werkdagen
maand 3: 2 werkdagen
maand 4: 9 werkdagen
maand 5: 5 werkdagen

Mogelijk kan iemand mij even een duwtje de goede richting in helpen. Alvast bedankt!
 
PHP hulp

PHP hulp

28/03/2024 11:45:40
 
Arjan -

Arjan -

24/08/2011 16:39:51
Quote Anchor link
Select maand, count(dag) as aantal_dagen from tabel group by maand order by maand asc

Dit is vanaf mn mobiel getypt, vandaar het ontbreken van de opmaak. Echter heb je met bovenstaande query nog wel het probleem dat wanneer 2 of meer records op dezelfde dag betrekking hebben dat dan het aantal dagen niet klopt. Mocht het niet lukken om dit op te lossen dan zal ik er op een later tijdstip naar kijken.
 
Bas IJzelendoorn

Bas IJzelendoorn

24/08/2011 19:38:20
Quote Anchor link
Heb het werkend gekregen :) Maar ik loop nog ergens tegen aan. Ik heb ook nog enkele totaal tijden in mij database staan (bijvoorbeeld: 09:15, 15:55, 03:20) op geteld kom je dan op 28:30. Echter rekent COUNT() enkel de uren dus dan kom je op 27 uur uit. Hoe pak ik dit aan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT maand, COUNT(tijdtotaal) AS aantal_uren FROM tijdregistratie WHERE eigenaar='".$gebruikersnaam."' AND jaar='2011' GROUP BY maand ORDER BY maand ASC";    
 
Arjan -

Arjan -

24/08/2011 23:51:49
Quote Anchor link
Gebruik sum() in plaats van count en kijk eens naar time_to_sec() en sec_to_time(). Dus iets als sec_to_time(sum(time_to_sec(tijd)))
Gewijzigd op 24/08/2011 23:54:55 door Arjan -
 
Bas IJzelendoorn

Bas IJzelendoorn

25/08/2011 12:54:41
Quote Anchor link
Jup na wat stoei werk is het allemaal gelukt. Super bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.