我正在尝试获得seach政策的最后一次net_insurance,并在此之后获得type_money 有人可以帮帮我吗?
这是我的表格政策
|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
我正在尝试获取seach policy_id的最后一次net_insurance
|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
这是我的查询
http://sqlfiddle.com/#!2/19fb8/6
请有人帮我这个吗?
我真的很感激帮助
答案 0 :(得分:1)
试试这个:
SELECT type_money, sum(net_insurance) from insurances
WHERE id IN (
SELECT max(id) FROM insurances
GROUP BY policy_id
)
GROUP BY type_money
请记住,问题中的输入数据与小提琴中的输入数据不同。
弄清问题中的数据:here。
使用问题数据输出:
| TYPE_MONEY | TOTAL |
|------------|-------|
| 1 | 1000 |
| 2 | 1200 |
答案 1 :(得分:0)
使用分组最大黑客攻击,然后将结果加起来。
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
请参阅:http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-row.html