【SQL】585. 2016年的投资 (group by 执行图解)

前述

知识点学习:看一遍就理解:group by 详解 ,图解讲解细致,推荐学习。

题目描述

leetcode题目:585. 2016年的投资


  1. 定位pid:符合两个条件的。直接用条件筛选即可。指定字段in, not in,再结合group by having等。
  2. 再加和,注意小数点后保留两位 => ROUND()函数

写法一

sql 复制代码
select round(sum(A.tiv_2016), 2) as tiv_2016
from Insurance A
where A.tiv_2015 in (
    select tiv_2015
    from Insurance
    group by tiv_2015
    having count(*) > 1
) 
and (lat, lon) in (
    select lat, lon
    from Insurance
    group by lat, lon
    having count(*) = 1
)

写法二

不同点:官方题解中用了concat()函数,不用也行

sql 复制代码
select round(sum(A.tiv_2016), 2) as tiv_2016
from Insurance A
where A.tiv_2015 in (
    select tiv_2015 
    from Insurance
    group by tiv_2015
    having count(*) > 1
    )
and concat(lat, lon) in(
    select concat(lat, lon)
    from Insurance
    group by lat, lon 
    having count(*) = 1
)

记录自己思维错误点:

  1. 要做筛选,从表中挑选出需要的数据,而不要总想着删除表中多余行。(一开始想的是,如何把两个重复经纬度的去掉? )
  2. 注意:where子句还处于"确定"结果集的过程中,因而不能使用聚集函数。用having过滤即可。
  3. group by 细节学习:看一遍就理解:group by 详解
相关推荐
jiayou6417 小时前
KingbaseES 实战:深度解析数据库对象访问权限管理
数据库
李广坤2 天前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
爱可生开源社区3 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1773 天前
《从零搭建NestJS项目》
数据库·typescript
加号33 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏3 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐3 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
琢磨先生David3 天前
Day1:基础入门·两数之和(LeetCode 1)
数据结构·算法·leetcode
百锦再3 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest3 天前
数据库SQL学习
数据库·sql