Jag ska summera de åtta högsta talen från kolumn "j04" från databasen. Men jag får inte det att fungera. TOP ska ligga direct efter SELECT : Den summerar ALLA tal i kolumnen, inte bara top 8. Vad är fel?? Vad är fel? Jag är fel :-) En omständigväg att gå är att först plocka ut ID för de 8 högsta talen och sedan summera de tal som har dessa id. En SQL guru kan säkert hitta en snabbare och bättre lösning, men denna fungerar iallafall (teoretisk, har inte orkat prova. Pröva följande: Pers variant testade jag också men den ger syntac-fel.Summera de åtta högsta talen från en kolumn?
Så här gjorde jag:
<code>
SQL = "SELECT SUM(Top 8 j04) AS snitt1 FROM ranking"
</code>
Vad ska ändras?Sv: Summera de åtta högsta talen från en kolumn?
<code>
SQL = "SELECT TOP 8 SUM(j04) AS snitt1 FROM ranking"
</code>Sv: Summera de åtta högsta talen från en kolumn?
SQL99 = "SELECT TOP 8 SUM(j04) AS snitt99 FROM rejting"
RecSet.Open SQL99
Response.Write RecSet("snitt99")
RecSet.Close
Så ser koden ut nu....
Vad jag än ändrar 8-an till gör det ingen skillnad.
Det räknas fram ett alldeles för stort tal.Sv: Summera de åtta högsta talen från en kolumn?
Sv: Summera de åtta högsta talen från en kolumn?
Jag trodde i min enfald att SUM jobbade mot de rader som TOP hade plockat ut men så var det tydligen inte. Den tar hela tabellen...Sen skriver du "summera de åtta högsta talen" vilket jag först tolkade som de 8 första talen, och det är ju inte riktigt samma sak. Följande SQL plockar ut de 8 högsta talen genom att sortera på kolumnen (dock summerar den inte) :
SELECT TOP 8 [kolumnNamn] FROM [Tabellnamn] ORDER BY [KolumnNamn] DESC
När jag lägger på summering på detta så blir resultatet dock som tidigare. Summan av hela tabellen...Jag försökte med en sub-query :
SELECT SUM(SELECT TOP 8 [kolumnNamn] FROM [Tabellnamn] ORDER BY [KolumnNamn] DESC) AS Summa
Men det blev syntaxfel på det...*suck*...jag kommer nog inte längre än så med mina SQL-kunskaper. Kanske skulle du ställa frågan igen i forumet DATABASER. Kan hända att de riktigt duktiga SQL-nissarna har missat denna tråd.Sv: Summera de åtta högsta talen från en kolumn?
<code>
SELECT SUM([kolumnen som du vill räkna på]) FROM [Tabellen] WHERE [ID-nummret för raden] IN (SELECT TOP 8 [ID-nummret för raden] FROM [Tabellen] ORDER BY [kolumnen som du vill räkna på] DESC)
</code>
Alltså typ så här
<code>
SELECT SUM(Points) FROM [Games] WHERE [GameID] IN (SELECT [GameID] FROM [Points] ORDER BY [Points] DESC
</code>
- MSv: Summera de åtta högsta talen från en kolumn?
<code>
SELECT SUM(Points) FROM (SELECT TOP 8 Points FROM Games ORDER BY Points DESC)
</code>Sv: Summera de åtta högsta talen från en kolumn?
"Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near ')'."
Magnus variant fungerar dock, bara det att "TOP 8" saknas i det nedre uttrycket :
SELECT SUM(Points) FROM [Games] WHERE [GameID] IN (SELECT TOP 8 [GameID] FROM [Points] ORDER BY [Points] DESC