Avatar billede newbie.dk Praktikant
18. marts 2004 - 21:45 Der er 11 kommentarer og
1 løsning

Udvælg poster og udregn gennemsnit heraf.

Kan man udvælge nogle poster fra sin database og derefter udregne et gennemsnit?
Jeg har en tabel, i denne er der et felt med type, enten hund eller kat. Og et felt med disses alder.
Kan man udvælge alle hunde og derefter lave et gennemsnit af deres alder?

strSQL = "Select * From dyrdata Where Type = 'hund'"

Jeg tror man måske kan bruge AVG, men det er bare hvordan?

Kan I hjælpe?
Avatar billede muddi Praktikant
18. marts 2004 - 21:54 #1
strSQL = "Select AVG(alderskollone) From dyrdata Where Type = 'hund'"
Avatar billede newbie.dk Praktikant
18. marts 2004 - 23:01 #2
Kan ikke lige få det til at virke. Måske blander jeg ting sammen, kan du hjælpe? Noget af koden står her:

Conn.Open DSN
strSQL1 = Select AVG(alder) From dyrdata Where Type = "hund"
strSQL2 = Select AVG(alder) From dyrdata Where Type = "kat"

strSQL = "Insert into dyrdata ("
strSQL = strSQL & "postnr, "
...

Længere nede på siden laves denne:
Response.Write "<br><br>Gennemsnitsalder for hunde er: " & strSQL1
...
Response.Write "<br><br>Gennemsnitsalder for katte er: " & strSQL2
Avatar billede ellebaek Nybegynder
18. marts 2004 - 23:06 #3
du skal eksekvere de 2 ovenstående sqlsætninger for med et recordset / connection.

fx.
strSQL1 = Select AVG(alder) as hundalder From dyrdata Where Type = 'hund'"
strSQL2 = Select AVG(alder) as katalder From dyrdata Where Type = 'kat'"
set rs = server.createobject("adodb.connection")
set rs2 = server.createobject("adodb.connection")
rs2.opem DSN
rs.open DSN
set rs = rs.execute(strSQL1)
set rs2 = rs2.execute(strSQL2)

strSQL = "Insert into dyrdata ("
strSQL = strSQL & "postnr, "
...

Længere nede på siden laves denne:
Response.Write "<br><br>Gennemsnitsalder for hunde er: " & rs("hundalder")
...
Response.Write "<br><br>Gennemsnitsalder for katte er: " & rs("katalder")


sådan her f.eks. kan det laves.
Avatar billede newbie.dk Praktikant
18. marts 2004 - 23:57 #4
Så ser det ud som om det virker. Kanon. Jeg har ikke selv lige prøvet at regne efter, men jeg går ud fra det er til at stole på. Men tjekker lige imorgen.

Nu da jeg er ret ny i ASP(og ikke har brugt recordset/connection før), blev jeg lidt i tvivl om min kode, bla. om min 'Conn.Open DSN' er sat korekt. Nu hvor der er kommet en 'rs2.open DSN' ind også.
Kunne I ikke lige kigge på koden og se om det er okay?

Min kode ser jo ud ala dette:


Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("../dyr.mdb")
Conn.Open DSN

strSQL1 = "Select AVG(alder) as hundalder From dyrdata Where Type = 'hund'"
strSQL2 = "Select AVG(alder) as katalder From dyrdata Where Type = 'kat'"
set rs1 = server.createobject("adodb.connection")
set rs2 = server.createobject("adodb.connection")
rs2.open DSN
rs1.open DSN
set rs1 = rs1.execute(strSQL1)
set rs2 = rs2.execute(strSQL2)

strSQL = "Insert into dyrdata ("
strSQL = strSQL & "postnr, "

...hop i kode...

Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
%>

...hop i kode...


Dim genkat
genkat = rs2("katalder")

Response.Write "<br><br>Gennemsnitsalder for hunde er: " & rs1("hundalder")
Response.Write "<br><br>Gennemsnitsalder for katte er: " & round(genkat,2)
%>
</body>
</html>
Avatar billede muddi Praktikant
19. marts 2004 - 08:24 #5
Jeg er ikke så god til ASP, men dit spm omhandler SQL og det kan jeg finde ud af.
Der findes en lækker lille tutorial på dansk her, der kan du helt sikkert få et par gode begynder fifs :o)
http://www.html.dk/tutorials/asp/
Avatar billede newbie.dk Praktikant
19. marts 2004 - 10:54 #6
Nå men så venter jeg lige til ellebaek vender tilbage, han kan sikkert svare.

Men så kan det være du kan hjælpe mig med at finde ud af hvor mange poster gennemsnittet af udregnet af?
Avatar billede muddi Praktikant
19. marts 2004 - 11:08 #7
Det bliver beregnet på alle poster i databasen. Også dem hvor der ikke er angivet nogen alder. Hvis du vil undgå at de medregnes skal du indsætte WHERE alder NOT LIKE NULL
Avatar billede newbie.dk Praktikant
19. marts 2004 - 11:43 #8
Okay, men det jeg tænkte på var at beregningen af
Select AVG(alder) as hundalder From dyrdata Where Type = 'hund'"
Udgør et antal poster, dette antal vil jeg gerne vide.
Avatar billede muddi Praktikant
19. marts 2004 - 12:46 #9
Mener du kan klare det med denne forespørgsel:

SELECT AVG(alder) AS hundalder, COUNT(*) AS antalhunde FROM dyrdata WHERE Type = "hund";
Avatar billede newbie.dk Praktikant
10. maj 2004 - 16:18 #10
Nu kan jeg dårlig huske hvordan pointne blev fordelt i dette spm.
Men fik ellebaek ikke nogle point???
Avatar billede ellebaek Nybegynder
10. maj 2004 - 21:46 #11
Tror jeg ikke.. smider et svar ;-)
Avatar billede ellebaek Nybegynder
18. maj 2004 - 13:27 #12
mystisk at mit svar stadig er åbent når spørgsmålet er lukket..?
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