Mysql 获取最后一个值并求和问题
我正试图得到最后一笔seach保单的净保险,然后再按类型付款 有人能帮我吗 这是我的桌子Mysql 获取最后一个值并求和问题,mysql,sql,Mysql,Sql,我正试图得到最后一笔seach保单的净保险,然后再按类型付款 有人能帮我吗 这是我的桌子 |ID| |POLICY_NUM| 1 1234 2 5678 3 3444 4 4577 这是我的桌子 |ID| |POLICY_ID| |NET_INSURANCE| |TYPE_MONEY| 1 1 300 1
|ID| |POLICY_NUM|
1 1234
2 5678
3 3444
4 4577
这是我的桌子
|ID| |POLICY_ID| |NET_INSURANCE| |TYPE_MONEY|
1 1 300 1
2 1 400 2
3 1 100 1
4 2 400 1
5 2 800 2
6 3 100 1
7 3 400 2
8 4 800 2
9 2 900 1
我想买最后一份保险单
|ID| |POLICY_ID| |LAST_NET_INSURANCE| |TYPE_MONEY|
3 1 100 1
9 2 900 1
7 3 400 2
8 4 800 2
我真正想要的是这个
|TYPE_MONEY| |total|
1 1000
2 1200
这是我的问题
有人能帮我吗
我将非常感谢您的帮助使用一个分组最大化的hack,然后将结果相加
SELECT insurances.type_money, SUM(insurances.net_insurance)
FROM insurances
LEFT JOIN insurances maxhack
ON insurances.policy_id = maxhack.policy_id
AND insurances.id < maxhack.id
WHERE maxhack.id IS NULL
GROUP BY type_money
选择insurances.type\u money,SUM(insurances.net\u insurance)
保险费
左键连接maxhack
ON insurances.policy_id=maxhack.policy_id
和保险.id
请参阅:使用groupwise maximum hack,然后将结果相加
SELECT insurances.type_money, SUM(insurances.net_insurance)
FROM insurances
LEFT JOIN insurances maxhack
ON insurances.policy_id = maxhack.policy_id
AND insurances.id < maxhack.id
WHERE maxhack.id IS NULL
GROUP BY type_money
选择insurances.type\u money,SUM(insurances.net\u insurance)
保险费
左键连接maxhack
ON insurances.policy_id=maxhack.policy_id
和保险.id
请参阅:尝试以下方法:
SELECT type_money, sum(net_insurance) from insurances
WHERE id IN (
SELECT max(id) FROM insurances
GROUP BY policy_id
)
GROUP BY type_money
请记住,问题中的输入数据与小提琴中的输入数据不同
修改问题中的数据:
输出问题中的数据:
| TYPE_MONEY | TOTAL |
|------------|-------|
| 1 | 1000 |
| 2 | 1200 |
试试这个:
SELECT type_money, sum(net_insurance) from insurances
WHERE id IN (
SELECT max(id) FROM insurances
GROUP BY policy_id
)
GROUP BY type_money
请记住,问题中的输入数据与小提琴中的输入数据不同
修改问题中的数据:
输出问题中的数据:
| TYPE_MONEY | TOTAL |
|------------|-------|
| 1 | 1000 |
| 2 | 1200 |
从哪里获得1000和2000的总值?类型的钱的总数应该是1200,而不是2000?我的错,我用1000和1200编辑它。你从哪里得到1000和2000的总值?TYPE_MONEY的总数应该是1200,而不是2000?我的错,我用1000和1200编辑它,但这不等于每个保单的最大值(insurance.id)吗?看起来它在大型数据集上的性能不是很好。OP必须
解释(并尝试)这两个方面才能确定,但一般来说,我不信任mysql处理子查询,而使用简单联接则可以。(我以前也用过数百万行的表。)@Eevee我试过你的代码,我得到了type_money(1)=400,type_money(2)=900,似乎不是working@CarlitosMorales这是因为你的小提琴中的数据与你问题中的数据不同。仔细查看你的数据;400和900是正确的。但这不等于为每个保单取最大值(insurance.id)吗?看起来它在大型数据集上的性能不是很好。OP必须解释(并尝试)这两个方面才能确定,但一般来说,我不信任mysql处理子查询,而使用简单联接则可以。(我以前也用过数百万行的表。)@Eevee我试过你的代码,我得到了type_money(1)=400,type_money(2)=900,似乎不是working@CarlitosMorales这是因为你的小提琴中的数据与你问题中的数据不同。仔细查看你的数据;400和900是正确的,欢迎。我等不及下一个了:欢迎光临。我等不及下一个了:P