如何解决显示总和的最大值
| 我试图找到一个求和结果的最大值,但我也找不到一种显示日期的方法。 我有一个表事务,其数据如下: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
这是正确的,但我无法添加transaction_date。
更新:我刚刚解决了它。好吧,如果有人想要这里的解决方案。
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,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.roww
谢谢大家的意见。
解决方法
SQL语句
;WITH Max_Transaction_Amount AS (
SELECT Transaction_Date,Transaction_Agent_ID,Transaction_Amount = SUM(Transaction_Amount)
FROM q
GROUP BY
Transaction_Date,Transaction_Agent_ID
)
SELECT mta.Transaction_Date,mta.Transaction_Agent_ID,mta.Transaction_Amount
FROM Max_Transaction_Amount mta
INNER JOIN (
SELECT Transaction_Agent_ID,Transaction_Amount = MAX(Transaction_Amount)
FROM Max_Transaction_Amount
GROUP BY
Transaction_Agent_ID
) q ON mta.Transaction_Agent_ID = q.Transaction_Agent_ID
AND mta.Transaction_Amount = q.Transaction_Amount
测试脚本
/* Create test data */
;WITH q (Transaction_Date,Transaction_Amount) AS (
SELECT \'2/5/11\',321,20
UNION ALL SELECT \'2/5/11\',10
UNION ALL SELECT \'2/5/11\',400,100
UNION ALL SELECT \'3/5/11\',5
UNION ALL SELECT \'3/5/11\',345,10
UNION ALL SELECT \'3/5/11\',50
UNION ALL SELECT \'4/5/11\',80
UNION ALL SELECT \'4/5/11\',5
)
/* Actual query */,Max_Transaction_Amount AS (
SELECT Transaction_Date,Transaction_Amount = MAX(Transaction_Amount)
FROM Max_Transaction_Amount
GROUP BY
Transaction_Agent_ID
) q ON mta.Transaction_Agent_ID = q.Transaction_Agent_ID
AND mta.Transaction_Amount = q.Transaction_Amount
,只需在外部选择中将“ 7”分组即可:
SELECT a.transaction_date,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,a.transaction_date
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。