做网站怎么盈利,上海网站建设兴策,青岛seo排名公司,网站网站营销特点前言
练习sql语句#xff0c;所有题目来自于力扣#xff08;https://leetcode.cn/problemset/database/#xff09;的免费数据库练习题。
今日题目#xff1a;
585.2016年的投资 表#xff1a;Person
列名类型pidinttiv_2015floattiv_2016floatlatfloatlonfloat
pid …前言
练习sql语句所有题目来自于力扣https://leetcode.cn/problemset/database/的免费数据库练习题。
今日题目
585.2016年的投资 表Person
列名类型pidinttiv_2015floattiv_2016floatlatfloatlonfloat
pid 是这张表的主键(具有唯一值的列)。表中的每一行都包含一条保险信息其中 pid 是投保人的投保编号。tiv_2015 是该投保人在 2015 年的总投保金额tiv_2016 是该投保人在 2016 年的总投保金额。lat 是投保人所在城市的纬度。题目数据确保 lat 不为空。lon 是投保人所在城市的经度。题目数据确保 lon 不为空。
编写解决方案报告 2016 年 (tiv_2016) 所有满足下述条件的投保人的投保金额之和
他在 2015 年的投保额 (tiv_2015) 至少跟一个其他投保人在 2015 年的投保额相同。他所在的城市必须与其他投保人都不同也就是说 (lat, lon) 不能跟其他任何一个投保人完全相同。tiv_2016 四舍五入的 两位小数 。 我那不值一提的想法 首先梳理表内容题干只给了一张保险表记录了投保编号投保人2015年的总投保金额2016年的总投保金额投保人所在城市的维度和经度 其次分析需求需要求满足以下条件投保金额之和 1.在2015年的投保额至少跟一个其他投保人在2015年的投保额相同 在这个地方就有两个思路 a.通过自连接然后判断条件pid相同tiv_2015不同b.通过子查询查询临时表。建立一个临时表这个临时表对tiv_2015进行分组只要tiv_2015的数量大于1就证明至少有一个是相等的。 2.他所在的城市必须与其他投保人都不同 通过子查询对latlon进行分组使得lat和lon的数量等于1这样就可以保证 查询结果的经纬度不重复 思路一
select round(sum(tiv_2016),2) as tiv_2016
from Insurance
where tiv_2015
in
( select tiv_2015from Insurancegroup by tiv_2015having count(*) 1
)
and (lat,lon)
in
(select lat,lonfrom Insurancegroup by lat,lonhaving count(lat) 1 and count(lon) 1
)思路二
select round(sum(distinct i1.tiv_2016),2) as tiv_2016
from Insurance i1 ,Insurance i2
where i1.pid ! i2.pid
and i1.tiv_2015 i2.tiv_2015
and (i1.lat,i1.lon)
in
(select lat,lonfrom Insurancegroup by lat,lonhaving count(lat) 1 and count(lon) 1
) 结果
思路一 思路二 总结
能运行就行。