SELECT player, SUM(score) AS sumscore, roundid
FROM stats as s
GROUP BY roundid, player
having sum(score) = (select max(s)
from (select sum(score) as s
from stats
where roundid = s.roundid)dt)
ORDER BY roundid DESC
select player, roundid, sum(score)
from stats s
where (select sum(score) from stats
where player = s.player
and round = s.roundid) >=
(select sum(score) from stats
where round = s.roundid)
group by player,roundid
select player,roundid,s
from (
select player, roundid, sum(score) s
from stats) dt
where s = (select max(s)
from (select player, roundid, sum(score) s
from stats) x
where roundid = dt.roundid)
Det hjälpte inte att göra en SP av den, och kollar man på CPU-belastningen så drar sql-server fullt när man kör frågan.
Jag har lagt till filter i den för att lättare testa, finns det något sätt att göra den prestandamässigt CPU-snålare?
CREATE PROCEDURE spGetWins
@intCid int,
@intUid int
AS
select count(*) as wins from
(
SELECT s as wins, player, roundid, course
FROM (SELECT player, roundid, SUM(score) s, course
FROM stats
GROUP BY player, roundid, course) dt
WHERE s =
(SELECT MIN(s)
FROM (SELECT player, roundid, SUM(score) s
FROM stats
GROUP BY player, roundid, course) x
WHERE roundid = dt.roundid)
and player = @intUid and course = @intCid
) y
124 ms totalt · 3 externa anrop · v20260731065814-full.58439ac5