Avatar billede cr2000 Nybegynder
20. oktober 2003 - 12:32 Der er 8 kommentarer og
1 løsning

DISTINCT og opstil efter hvilken der er flet af.

Hvordan kan jeg "ORDER" efter den med flest doubletter i denne sætning:

"SELECT DISTINCT Resolution FROM Statistik WHERE [DateTime] BETWEEN #"& now &"# AND #" & Dato & "#"

Hvis det altså kan lade sig gøre.
Avatar billede mortenkjeldberg Nybegynder
20. oktober 2003 - 12:37 #1
Hvis du bruger distinct, får du kun en af hver ud.

SELECT count(*), resolution FROM Statistik WHERE [DateTime] #"& now &"# AND #" & Dato & "#" ORDER BY 1 GROUP BY resolution
Avatar billede cr2000 Nybegynder
20. oktober 2003 - 12:39 #2
>>Hvis du bruger distinct, får du kun en af hver ud.<<

Det ved jeg godt... Men kunne være der var en måde at opstille en ORDER aligevel...
Avatar billede cr2000 Nybegynder
20. oktober 2003 - 12:40 #3
Koden jeg har lavet...



<%
Dato = Date & " 00:00:00"
Set Hits = DataConn.Execute("SELECT count(*) FROM Statistik WHERE [DateTime] BETWEEN #"& now &"# AND #" & Dato & "#")
IAlt = Hits(0)
%>
Du har haft <%=IAlt%> besøgende idag.<br><br>Deres opløsning var fordelt på denne måde:<br>
<table background="images/front2.bmp"><tr><td><b>Opløsning</td><td><b>Antal</td><td><b>Procent</td></tr>
<%

Set Hits = DataConn.Execute("SELECT DISTINCT Resolution FROM Statistik WHERE [DateTime] BETWEEN #"& now &"# AND #" & Dato & "#")

Do until Hits.EOF
Count = DataConn.Execute("SELECT count(*) FROM Statistik WHERE [Resolution] = '"&Hits("Resolution")&"' AND [DateTime] BETWEEN #"& now &"# AND #" & Dato & "#")
If not Ialt = 0 Then
Procent = (Count(0) * 100) / IAlt
else
Procent = 0
end if
Procent = FormatNumber(procent,2)
Response.Write "<tr bgcolor=""#FFFFFF""><td>" & Hits("Resolution") & "</td><td align=""right"">" & Count(0) & "</td><td align=""right"">" & Procent & "%</td></tr>"
Hits.MoveNext
Loop
%>
</table>
Avatar billede cr2000 Nybegynder
20. oktober 2003 - 12:41 #4
Den ville jeg så opstille sådan at den opløsning som er hyppist står øverst.
Avatar billede mortenkjeldberg Nybegynder
20. oktober 2003 - 12:41 #5
Den SQL jeg har lavet i mit svar laver på sin vis en distinct igennem GROUP BY kaldet.

/Morten
Avatar billede cr2000 Nybegynder
20. oktober 2003 - 12:48 #6
Jeg kan ikke få den til virke...
Avatar billede cr2000 Nybegynder
20. oktober 2003 - 12:52 #7
Kunne man evt sætte en "Count(*) as antal" og sige order efter "antal"?
Avatar billede mortenkjeldberg Nybegynder
20. oktober 2003 - 12:56 #8
Prøv følgende:

Set Hits = DataConn.Execute("SELECT count(*) as cnt, Resolution FROM Statistik WHERE [DateTime] BETWEEN #"& now &"# AND #" & Dato & "# GROUP BY Resolution ORDER BY 1 DESC")

Do until Hits.EOF

If not Ialt = 0 Then
Procent = (Hits("cnt") * 100) / IAlt
else
Procent = 0
end if
Procent = FormatNumber(procent,2)
Response.Write "<tr bgcolor=""#FFFFFF""><td>" & Hits("Resolution") & "</td><td align=""right"">" & Hits("cnt") & "</td><td align=""right"">" & Procent & "%</td></tr>"
Hits.MoveNext
Loop
%>

/Morten
Avatar billede cr2000 Nybegynder
20. oktober 2003 - 13:00 #9
Great... Det virker sørme...

Mange tak!
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