需要帮助编写一个查询,以便将2012年(tiv_2012)的总投资值总计为满足以下条件的所有保单持有人的小数点后两位: 1.与一个或多个其他保单持有人具有相同的tiv_2011价值。 2.与其他保单持有人不在同一个城市,即(lat,lon)对mut是唯一的。
这是我的查询,但它不适用于第2部分。(不在同一个纬度,lon):
SELECT ROUND( SUM(tiv_2012), 2)
FROM insurance
WHERE pid IN (SELECT i1.pid
FROM insurance i1, insurance i2
WHERE (i1.tiv_2011 = i2.tiv_2011 AND i1.pid != i2.pid)
AND ((i1.lat != i2.lat) AND (i1.lon != i2.lon))
)
会感激一些建议。谢谢!
答案 0 :(得分:0)
您可以使用exists
和not exists
:
SELECT ROUND( SUM(tiv_2012), 2)
FROM insurance i
WHERE EXISTS (SELECT 1
FROM insurance insurance i2
WHERE i2.tiv_2011 = i1.tiv_2011 AND i2.pid <> i.pid
) AND
NOT EXISTS (SELECT 1
FROM insurance insurance i2
WHERE i2.lat = i.lat AND i2.lon = i.lon AND i2.pid <> i.pid
)
答案 1 :(得分:0)
似乎是一个存在:
cv::Mat ccm = (srcFloat.t() * srcFloat).inv()* srcFloat.t() * trgFloat;