Я пытаюсь найти максимальные значения результата суммы, но не могу найти способ показать дату тоже.
у меня есть таблица транзакций, которая имеет такие данные:
transaction_date--Transaction_agent_id--transaction_amount
2/5/11 321 20
2/5/11 321 10
2/5/11 400 100
3/5/11 321 5
3/5/11 345 100
3/5/11 321 10
3/5/11 345 50
4/5/11 345 80
4/5/11 321 5
что я хочу, чтобы это был результат
transaction_date--Transaction_agent_id--transaction_amount
2/5/11 321 30
2/5/11 400 100
3/5/11 345 150
Что нужно сделать, это сначала сложить всю сумму за agent_id за день, а затем показать мне лучший день этого агента.
Что я сделал, это
SELECT a.transaction_agent_id, max(a.stotal) FROM
(
SELECT transaction_date,transaction_agent_id, sum(transaction_amount) as 'Stotal' FROM transactions
GROUP BY transaction_agent_id, transaction_date
)a
GROUP BY a.transaction_agent_id
, который дает мне это
Transaction_agent_id--transaction_amount
321 30
400 100
345 150
это правильно, но я не могу добавить дату транзакции.
Обновление: я только что решил. Ну, если кому-то нужно решение, вот оно.
SELECT a.transaction_date, a.transaction_agent_id, max(a.stotal) FROM
(
SELECT row_number() over (partition by transaction_agent_id order by sum(transaction_amount)desc) AS 'roww' ,transaction_date,transaction_agent_id, sum(transaction_amount) as 'Stotal' FROM transactions
GROUP BY transaction_agent_id, transaction_date
) a
WHERE a.roww = 1
GROUP BY a.transaction_date, a.transaction_agent_id, a.roww
Спасибо всем за ваш вклад.