Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取最后一个值并求和问题_Mysql_Sql - Fatal编程技术网

Mysql 获取最后一个值并求和问题

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

我正试图得到最后一笔seach保单的净保险,然后再按类型付款 有人能帮我吗

这是我的桌子

  |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