Используйте CTE
, который возвращает все итоговые цены для каждого электронного письма, и с помощью NOT EXISTS
выберите строки с верхней общей ценой:
WITH cte AS (
SELECT VisitorUserEMail, SUM(Price) SumPrice
FROM Ticket
WHERE Date >= '2000-01-01' AND Date <= '2020-12-31'
GROUP BY VisitorUserEMail
)
SELECT c.VisitorUserEMail
FROM cte c
WHERE NOT EXISTS (
SELECT 1 FROM cte
WHERE SumPrice > c.SumPrice
)
или:
WITH cte AS (
SELECT VisitorUserEMail, SUM(Price) SumPrice
FROM Ticket
WHERE Date >= '2000-01-01' AND Date <= '2020-12-31'
GROUP BY VisitorUserEMail
)
SELECT VisitorUserEMail
FROM cte
WHERE SumPrice = (SELECT MAX(SumPrice) FROM cte)
Обратите внимание, что вам не нужна функция date()
, потому что результат date('2000-01-01')
равен '2000-01-01'
. Также я думаю, что условия в предложении WHERE
должны включать =
, верно?