har en db där röster för olika saker sparas. Att sedan räkna ut medel för en specifik sak är ju inga problem då jag bara hämtar alla röster (värdet för alla röster) för en speciell sak och sedan delar med antalet röster. Då jag däremot vill lista exempelvis de tio sakerna med högst medelröst vet jag inte hur jag skall göra. Går detta att göra direkt i sql-frågan på något vis?
alternativet är ju att hämta allt, räkna ut medel för alla saker och sedan plocka ut de som har högst medelvärde.. blir väldigt omständigt men det kanske är ända sättet, eller??
Om du har en kolumn som heter votesX och en som heter votesR, där votesX är antalet röster, och votesR är resultatet av alla röster, så kan du köra en SQL-fråga enligt denna syntax:
SELECT Top 10 falt1,falt2,falt3,.. FROM tabell ORDER BY (votesR/votesX) DESC
SELECT TOP 10 sak_ID, AVG(rostvarde) AS medel from tabell GROUP BY sak_ID ORDER BY medel DESC
from tabell skall vara med också =) jag får den att plocka ut rätt tror jag men jag verkar inte kunna sortera efter medel. Tar jag bort order by medel desc så fungerar det fast det blir ju inte sorterat. vad kan vara felet med detta??
1. hur får jag med allt från tabellen och inte bara sak_ID?
2. hur avrundar jag värdet medel till en decimaler. jag vet ju inte om alla medeltal kommer att ha några decimaler?
SELECT TOP 10 sak_ID, AVG(rostvarde) AS medel
from tabell
GROUP BY sak_ID
ORDER BY 2 DESC
så får jag väl med sak_id för de tio med högst medel samt dess medelvärde, men inte användar_ID för respektive sak eller om jag ex vill göra såhär:
SELECT TOP 10 tabell.sak_ID,tabell2.*, AVG(tabell.rostvarde) AS medel
from tabell, tabell2 where tabell.sak_ID=tabell2.sak_ID
GROUP BY tabell.sak_ID
ORDER BY 3 DESC
behöver saker från andra tabeller också. vill helst göra detta med en sqlsats.