'Problem with SQL: combining a JOIN, SUM and MAX

I want to construct a query that provides me of the name of the party which received the most votes on their councilors.

The database is constructed in the following manner: Party (PartyID, NameParty, StartDate, AmountofSeats) Councilors (LidID, NameCouncilor, Council, Party, AmountofVotes)

Party in Councilors = PartyID in Party.

I wrote the following queries but both are not able to provide me with the correct party-name. Could someone help me out: what did I do wrong?

This code brings me the wrong party-name (it is not the highest amount of votes in total).

SELECT s.NameParty, s.SumVotes
    FROM (SELECT Party.NameParty, SUM(Councilors.AmountofVotes) SumVotes, Party.PartyID, Council.Party
        FROM Councilors
        JOIN Party on Party.PartyID = Councilors.Partij
        GROUP BY Party.PartyID) s
        WHERE s.SumVotes = (SELECT MAX(AmountofVotes)
                        FROM Councilors w1
                        WHERE w1.Party = s.PartyID);

Attempt2: This code gives me an error which has to do with the >= ALL but I do not understand why.

 SELECT s.NameParty, s.SumVotes
    FROM (SELECT Party.NameParty, SUM(Councilors.AmountofVotes) SumVotes, Party.PartyID, Councilors.Party
        FROM Councilors
        JOIN Partij on Party.PartyID = Councilors.Party
        GROUP BY Party.PartyID) s
        HAVING SUM(Councilors.AmountofVotes) >= ALL (
                SELECT SUM(Councilors.AmountofVotes) 
                FROM Councilors
                WHERE Councilors.Party = s.PartyID)


Solution 1:[1]

Now is a good time to learn about analytic functions. Use RANK() here:

WITH cte AS (
    SELECT p.PartyId, p.NameParty, SUM(c.AmountofVotes) SumVotes,
           RANK() OVER (ORDER BY SUM(c.AmountofVotes) DESC) rnk
    FROM Party p
    INNER JOIN Councilors c ON p.PartyID = c.Party
    GROUP BY p.PartyID, p.NameParty
)

SELECT PartyId, NameParty, SumVotes
FROM cte
WHERE rnk = 1;

Note that this approach is concise and is also robust to the possibility of ties between two or more parties having the most votes.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Tim Biegeleisen