[Access & SQL] COUNT functie in SQL

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • leond
  • Registratie: Juni 2003
  • Laatst online: 27-05-2020
Mensen,

Ik zit met een probleem.

Ik maak in Access een databse. Waarbij op een formulier een Medewerker wordt toegevoegd. En dan los verschillende reactie tijden ingevuld.
Resultaat is
dat er van een bepaalde dienst de gemiddelde reactietijden kan worden uitgerekend en het percentage van die reactie tijden van onder de 8 minuten.

Maar het probleem is dat als er geeneen reactie onder de 8 zit dan dan zie je het percetage hier dus niet van. Het percentage moet dan natuurlijk nul zijn.
Ik bereken dit als volgt:
(TotaalAantalReactie/ReactiesOnder8)*100
Maar omdat er geen reactie onder 8 zjin worden er geen waarden teruggeven om te tellen voor de functie Count.
Iemand enig idee hoe op te lossen?

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:30
:?
Ik snap er geen hol van.
Misschien kan je het eens wat duidelijker uitleggen, en kan je ook eens laten zien hoe je datamodel eruit ziet.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Hier is echt totaal geen touw aan vast te knopen. Je begint over een medewerker, dan ineens een reactietijd, en dan ineens een percentage... wtf is de relatie? :?

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • leond
  • Registratie: Juni 2003
  • Laatst online: 27-05-2020
Het doel is:
Het aantal reactie tijden tellen onder nul:
Count(Reactietijd)
FROM table
WHERE Reactietijd < 8

En als er geen tijden onder de 8 zijn moet hij nul teruggeven.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:30
select isnull(count(...), 0)
...

zoiets ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07 18:43
leond schreef op dinsdag 16 november 2004 @ 15:36:
Het doel is:
Het aantal reactie tijden tellen onder nul:
Count(Reactietijd)
FROM table
WHERE Reactietijd < 8

En als er geen tijden onder de 8 zijn moet hij nul teruggeven.
de query:
code:
1
2
3
Select Count(Reactietijd)
FROM table
WHERE Reactietijd < 8

gaat toch ook 0 teruggeven indien er geen reactie tijden onder de 8 zijn ?


Maar ik begreep dat het probleem zit bij bij de berekening?
(TotaalAantalReactie/ReactiesOnder8)*100
Zou dat overigens niet:
(ReactiesOnder8/TotaalAantalReactie)*100
moeten zijn?

Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 11-09 13:18

Dido

heforshe

leond schreef op dinsdag 16 november 2004 @ 15:30:
Ik bereken dit als volgt:
(TotaalAantalReactie/ReactiesOnder8)*100
Om te beginnen zou ik die deling andersom uitvoeren ;)

Verder begrijp ik dat je probleem is dat een count(*) geen nul teruggeeft?
Ik dacht eigenlijk dat ie dat wel deed als het ie niets telde... Wat geeft ie wel terug uit die query dan?

[ Voor 15% gewijzigd door Dido op 16-11-2004 15:49 ]

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • leond
  • Registratie: Juni 2003
  • Laatst online: 27-05-2020
Dido schreef op dinsdag 16 november 2004 @ 15:48:
[...]

Om te beginnen zou ik die deling andersom uitvoeren ;)

Verder begrijp ik dat je probleem is dat een count(*) geen nul teruggeeft?
Ik dacht eigenlijk dat ie dat wel deed als het ie niets telde... Wat geeft ie wel terug uit die query dan?
Ja de berekning is andersom. Mijn fout.

Maar hij geeft niks terug als er geen enkele reactie onder de 8 is.
Deze reactie tijden zijn gerelateerd aan een dienst. Er kunnen dus meerdere tijden aan een dienst zitten.
maar als er bij een dienst geen reactie tijden onder de 8 zijn moet er dus 'nul' worden teruggegeven.

En dat doet ie dus niet...

Acties:
  • 0 Henk 'm!

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07 18:43
leond schreef op dinsdag 16 november 2004 @ 15:52:
[...]


Ja de berekning is andersom. Mijn fout.

Maar hij geeft niks terug als er geen enkele reactie onder de 8 is.
Deze reactie tijden zijn gerelateerd aan een dienst. Er kunnen dus meerdere tijden aan een dienst zitten.
maar als er bij een dienst geen reactie tijden onder de 8 zijn moet er dus 'nul' worden teruggegeven.

En dat doet ie dus niet...
Maw: je hebt nu zo'n soort query ?:
code:
1
2
3
4
Select d.dienst, Count(r.Reactietijd)
FROM Dienst d join reactie r on (d.id = r.dienstId)
WHERE r.Reactietijd < 8
Group by d.dienst


probeer eens een left join (als mijn gedachte over de query opmaak klopt)
code:
1
2
3
4
Select d.dienst, Count(r.Reactietijd)
FROM Dienst d left join reactie r on (d.id = r.dienstId)
WHERE r.Reactietijd < 8
Group by d.dienst

[ Voor 9% gewijzigd door pjotrk op 16-11-2004 15:59 . Reden: wat duidelijker voorbeeld querie ]


Acties:
  • 0 Henk 'm!

  • leond
  • Registratie: Juni 2003
  • Laatst online: 27-05-2020
pjotrk schreef op dinsdag 16 november 2004 @ 15:56:
[...]


Maw: je hebt nu zo'n soort query ?:
code:
1
2
3
4
Select d.dienst, Count(r.Reactietijd)
FROM Dienst d join reactie r on (d.id = r.dienstId)
WHERE r.Reactietijd < 8
Group by d.dienst


probeer eens een left join (als mijn gedachte over de query opmaak klopt)
code:
1
2
3
4
Select d.dienst, Count(r.Reactietijd)
FROM Dienst d left join reactie r on (d.id = r.dienstId)
WHERE r.Reactietijd < 8
Group by d.dienst
Bedankt voor je reactie,

Helaas werkt dit ook niet.
Hij geeft hetzelfde resultaat als voorheen met de INNER JOIN...
Ik heb hierover helaas ook verder geen idee...

Acties:
  • 0 Henk 'm!

  • Haploid
  • Registratie: Maart 2002
  • Laatst online: 29-12-2021

Haploid

Doh!

Als je de exacte query post, dan praat het wat makkelijker. Het zal vast een of ander klein foutje zijn, maar als je de query niet ziet, dan kun je alleen een beetje rondprikken in het donker.

Hey, I came here to be drugged, electrocuted and probed, not insulted.


Acties:
  • 0 Henk 'm!

  • PaulZ
  • Registratie: Augustus 2004
  • Laatst online: 21-05-2024
Als die query geen nul teruggeeft (wat volgens mij wel zou moeten) zou je het eens kunnen proberen om die in een subquery te gooien.
Dan wordt 't zoiets ('k weet niet of het helemaal correct is):
code:
1
2
3
4
SELECT NZ(AANTAL,0) FROM 
 (Select Count(Reactietijd) AS AANTAL
  FROM table
  WHERE Reactietijd < 8)

[ Voor 9% gewijzigd door PaulZ op 16-11-2004 21:24 ]

Vlinders moet je volgen, niet vangen...

Pagina: 1