获取最后一个值和总和问题

时间:2013-10-30 20:16:31

标签: mysql sql

我正在尝试获得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

请有人帮我这个吗?

我真的很感激帮助

2 个答案:

答案 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