webForumDet fria alternativet

2 uträkningar i en och samma SQL fråga?

Databaser & SQL

3 svar · 230 visningar · startad av wborg

Medlem sedan dec. 2003209 inlägg
Frågan#1

Tja!

Jag undrar om man på något sätt först kan räkna ut ett snitt för ett antal personer för att sedan lista top 10 lägsta snitten?

Exempel:

Jag klickar på Bana 1 och vill då få fram top 10 lägsta snitten på den banan.
(snitten finns ej med i DB:n, där finns bara varje runda inmatad bana för bana, på följande vis Bana1=3 Bana2=1 Bana3=3 osv till och med bana 18 samt totalscoren på varje runda).

Bansnittet räknar jag ut på följande vis:

<span class="rub"><b>Banstatistik</b></span><br><br>
	<table cellpadding="0" cellspacing="0">
 	<%

	Set objrs = Conn.Execute("SELECT round(AVG(AMT1+0.0),3) AS medel from tbl_res Where PlayerId ='"& strpID &"' ")
	
	    Response.Write "<tr>"
	    Response.Write "<td width=""150"">Bana 1 - Sparbössa</td>"
	    Response.Write "<td align=""right"">"

		If Not IsNull(objRs("Medel")) Then
			Varde = objrs("medel")
			Response.Write FormatNumber(Varde, 2) 	
		Else
			Response.Write "-"

		End If

	    Response.Write "</td>"
	    Response.Write "</tr>"

	    Response.Write "<tr>"
	    Response.Write "<td colspan=""2""><hr color=""#C6C6C6"" size=""1px""></td>"
	    Response.Write "</tr>"

	Set objrs = Conn.Execute("SELECT AVG(AMT2) AS medel from tbl_res Where PlayerId ='"& strpID &"' ")
	
	    Response.Write "<tr>"
	    Response.Write "<td width=""150"">Bana 2 - Dubbelport</td>"
	    Response.Write "<td align=""right"">"
		If Not IsNull(objRs("Medel")) Then
			Varde = objrs("medel")
			Response.Write FormatNumber(Varde, 2) 	
		Else
			Response.Write "-"

		End If
	    Response.Write "</td>"
	    Response.Write "</tr>"

	    Response.Write "<tr>"
	    Response.Write "<td colspan=""2""><hr color=""#C6C6C6"" size=""1px""></td>"
	    Response.Write "</tr>"

M v h
/S

Medlem sedan dec. 19996 721 inlägg
#2

Principen är så här:

SELECT TOP 10 PlayerID,round(AVG(AMT1+0.0),3) AS medel from tbl_res GROUP BY PlayerID ORDER BY AVG(AMT1+0.0)

Kör du MySQL får du använda LIMIT-varianten i stället för TOP

Medlem sedan dec. 2003209 inlägg
#3

Tack emission, du är kung just nu!

Medlem sedan dec. 2003209 inlägg
#4

Tänkte bara ställa en liten följdfråga, går det att oxå räkna ut på vilken placering man ligger på varje bana/hål med hjälp av SQL. Dvs bygga ut den befintliga SQL frågan här ovan och få ut placeringen:

264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)