Avatar billede jss Nybegynder
30. juni 2005 - 14:46 Der er 2 kommentarer og
1 løsning

Kombination af Count,Sum og noget helt tredje (måske)

Hej
Har brug for at kunne sikre at tal i et felt har en bestemt sammensætning ifht. et andet felt.

Eks:

Niv3 | Koeb
1 | 1 
1 | 1
1 | 2
1 | 2
1 | 3
1 | 3
1 | 4
1 | 5
1 | 5
2 | 1
2 | 2
2 | 3
2 | 4
2 | 5

Ifht. til feltet Niv3 skal feltet Koeb indeholde ENTEN 2 et-taller, 2 to-taller, 2 tre-taller, 1 fire-tal og 2 fem-taller ELLER 1 et-tal, 1 to-tal, 1 tre-tal, 1 fire-tal og 1 fem-tal. Dvs. i første situation er der 9 poster (sum=26) i Niv3 og i anden situation 5 poster (sum=15).

Jeg er nået dertil at jeg laver en SQL-sætning, der giver mig summen og antal ifht. niv3.

strSQL = "SELECT P.niv3, sum(V.koeb) as total,count(V.koeb) as antal FROM butik AS P INNER JOIN visit AS V ON V.PID = P.PID GROUP BY P.niv3 ORDER BY sum(V.koeb)"

Dette bruger jeg så til at teste om kombinationen opfylder mine krav, MEN der er stadig den svaghed at andre (forkerte) talkombinationer slipper igennem (feks. 3x1,1x2,1x3,2x4,2x5)

if (Int(objRS("total")) = 15 OR Int(objRS("total")) = 26) AND (Int(objRS("antal")) = 5 OR Int(objRS("antal")) = 9) then
  ' det passer
else
  ' det passer ikke
end if

Kan man gøre dette via SQL eller skal man igang med noget helt andet?
Avatar billede jss Nybegynder
01. juli 2005 - 08:58 #1
er der nogen bud på dette?
Avatar billede jss Nybegynder
05. juli 2005 - 09:15 #2
Har selv fundet en brugbar løsning ved at tilføje sql-funktionen standard afvigelse:

strSQL = "SELECT P.niv3, sum(koeb) as total,count(koeb) as antal,STDEV(koeb) as afv FROM PDKposthus AS P INNER JOIN PDKvisit AS V ON V.PID = P.PID GROUP BY P.niv3 ORDER BY count(koeb),P.niv3"

Herefter tjekkes at hver post opfylder kriteriet om sum=15/26, antal=5/9 OG std. afv=1.5811/1.5366 (4 dec.)

if (Int(objRS("total"))=15 AND Int(objRS("antal"))=5 AND round(tmp,4)=1.5811) then
  ' Det passer
elseif (Int(objRS("total"))=26 AND Int(objRS("antal"))=9 AND round(tmp,4)=1.5366) then
  ' Det passer
else
  ' Det passer ikke
end if

Så ved at kombinere sum,count og STDEV kan jeg sikre at mine kriterier er overholdt (jvf. oprindelige spørgsmål)
Avatar billede jss Nybegynder
05. juli 2005 - 09:26 #3
hvor tmp er:
if (objRS("afv")) Then
  tmp=objRS("afv")
else
  tmp=0
end if
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester