Skip to content

Instantly share code, notes, and snippets.

@dsartori
Created April 9, 2022 13:30
Show Gist options
  • Save dsartori/c516dbd98f9b7d8433d8d577cc3f25d0 to your computer and use it in GitHub Desktop.
Save dsartori/c516dbd98f9b7d8433d8d577cc3f25d0 to your computer and use it in GitHub Desktop.
DROP TABLE IF EXISTS #VotesCast
SELECT
e.ECNumber,
e.EcNameEn,
SUM(CASE WHEN e.electionyear = 2015 THEN pr.votes ELSE 0 END) AS Votes2015,
SUM(CASE WHEN e.electionyear = 2019 THEN pr.votes ELSE 0 END) AS Votes2019,
SUM(CASE WHEN e.electionyear = 2021 THEN pr.votes ELSE 0 END) AS Votes2021
INTO #VotesCast
FROM pollresult pr
INNER JOIN poll p ON pr.pollid = p.pollid
INNER JOIN ed e ON e.edid = p.edid
GROUP BY e.EcNumber,e.EcNameEn
--select * from #VotesCast
SELECT
pro.Province,
ed.ECNumber,
ed.ECNameEn,
pa.PartyNameEn,
CASE WHEN MAX(v.Votes2015) > 0 THEN SUM(CASE WHEN ed.ElectionYear = 2015 THEN CAST(Votes AS DECIMAL(10,6)) ELSE 0 END) / MAX(v.Votes2015) ELSE 0 END AS 'Vote Share 2015' ,
CASE WHEN MAX(v.Votes2019) > 0 THEN SUM(CASE WHEN ed.ElectionYear = 2019 THEN CAST(Votes AS DECIMAL(10,6)) ELSE 0 END) / MAX(v.Votes2019) ELSE 0 END AS 'Vote Share 2019',
CASE WHEN MAX(v.Votes2021) > 0 THEN SUM(CASE WHEN ed.ElectionYear = 2021 THEN CAST(Votes AS DECIMAL(10,6)) ELSE 0 END) / MAX(v.Votes2021) ELSE 0 END AS 'Vote Share 2021'
FROM PollResult pr
INNER JOIN poll p ON pr.pollID = p.pollID
INNER JOIN candidate c ON c.CandidateID = pr.candidateID
INNER JOIN party pa ON c.partyID = pa.partyID
INNER JOIN ed ON ed.EDID = p.EDID
INNER JOIN ED_province() pro ON ED.EDID = pro.EDID
INNER JOIN #VotesCast v ON ed.ECNameEn = v.ECNameEn
WHERE Pa.PartyNameEn IN ('Conservative','Liberal','NDP-New Democratic Party','Bloc Québécois','Green Party')
GROUP BY pro.province,ed.ECNumber,ed.ECNameEn,pa.PartyNameEn
ORDER BY Province,ECNameEn, PartyNameEn
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment